4

2 つのファイル (新旧) を比較すると、次のようになります。

private extern static void SipShowIM(uint dwFlag);

...古いファイルで、そして:

private static extern void SipShowIM(uint dwFlag);

...新しいファイルで。

なぜ変更されたのかはわかりません。extern と static のどちらが先かは重要ですか?

アップデート

私はこれを(直接)しなかったことを知っているので、Resharperはこれを行ったに違いありませんが、古いものとの別の違いは次のとおりです。

public volatile static bool ProcessCommands = true;

...そして新しい:

public static volatile bool ProcessCommands = true;
4

4 に答える 4

2

そうですね、この 2 つの使い方に違いがあるとは思いません。私はMSDNページのコードを検討しました。両方の方法 (extern staticと)を試しましたがstatic extern、両方のコードで同じILコードが生成されました。

.method public hidebysig static int32  Main(string[] args) cil managed
{
  .entrypoint
  // Code size       41 (0x29)
  .maxstack  4
  .locals init ([0] string myString,
           [1] int32 CS$1$0000)
  IL_0000:  nop
  IL_0001:  ldstr      "Enter your message: "
  IL_0006:  call       void [mscorlib]System.Console::Write(string)
  IL_000b:  nop
  IL_000c:  call       string [mscorlib]System.Console::ReadLine()
  IL_0011:  stloc.0
  IL_0012:  ldc.i4.0
  IL_0013:  call       native int [mscorlib]System.IntPtr::op_Explicit(int32)
  IL_0018:  ldloc.0
  IL_0019:  ldstr      "My Message Box"
  IL_001e:  ldc.i4.0
  IL_001f:  call       int32 ProgramConsole.Program::MessageBox(native int,
                                                                string,
                                                                string,
                                                                int32)
  IL_0024:  stloc.1
  IL_0025:  br.s       IL_0027
  IL_0027:  ldloc.1
  IL_0028:  ret
} // end of method Program::Main

だから、私のお金はNOです。

于 2013-04-17T19:11:55.130 に答える
2

いいえ、C# の仕様によると、すべてのメソッド修飾子の順序は同等です。バージョン 4.0、セクション B.2.7、493 ページ:

メソッド修飾子:
      メソッド修飾子
      メソッド修飾子 メソッド修飾子

method-modifier:
      new
      public
      protected
      internal
      private
      static
      virtual
      seal
      override
      abstract
      extern

これは明らかに静的コンストラクターではありませんが、497 ページ (まだセクション B.2.7) では、両方の注文が明示的に呼び出されています。

static-constructor-modifiers:
      extern opt static
      static extern opt

于 2013-04-17T19:34:49.257 に答える
2

いいえ、これらのキーワードの順序は重要ではありません。

于 2013-04-17T18:54:30.117 に答える
1

メソッド修飾子の順序は重要ではありません。ただし、通常は と表記されstatic externます。

StyleCop のようなツールはそれについて文句を言います:SA1206: The 'static' keyword must come before the 'other' keyword in the element declaration. それは単にコーディング スタイルの問題です。

于 2013-04-17T19:15:10.737 に答える