4

私は C# プログラムを書いています。VisualStudio の VSTO ウィザードは以下のコードを生成します。

private static string GetResourceText(string resourceName)
{
    Assembly asm = Assembly.GetExecutingAssembly();
    string[] resourceNames = asm.GetManifestResourceNames();
    for (int i = 0; i < resourceNames.Length; ++i)
    {
        if (string.Compare(resourceName, resourceNames[i], StringComparison.OrdinalIgnoreCase) == 0)
        {
            using (StreamReader resourceReader = new StreamReader(asm.GetManifestResourceStream(resourceNames[i])))
            {
                if (resourceReader != null)
                {
                    return resourceReader.ReadToEnd();
                }
            }
        }
    }
    return null;
}

if (resourceReader != null)コンストラクターは常に null 以外を返すため、冗長だと思い ます。ではない?

4

5 に答える 5

1

ReSharperによると:

if (resourceReader != null)

式は常に true

これは、StreamReaderコンストラクターが決して返さないためnullです。実際、コンストラクターが返される時間は頭から離れませnull

于 2013-09-26T11:04:00.070 に答える
0

Constructors Should Not Return Null Values To Everywhere and On EveryTime

于 2013-09-26T12:51:55.730 に答える
0

Readlineまたは他のメソッドは null を返すことができますが、そうでstreamreaderはありません。インスタンスを作成すると同時にインスタンスを割り当てるためです。だから調べても無駄。

于 2013-09-26T11:03:39.543 に答える