1

resharperツールを使用すると、「String」を使用するのではなく、「組み込み型の「string」を使用する」とだけ表示されます。同様に、UInt32をuintに変換します。

私はこれをグーグルで検索しました、そして私が見つけることができるのはそれらがエイリアスであるということだけです。「重複」を意味するエイリアス。Ok。しかし、彼らはそれについて正確に何を意味するのでしょうか?

  1. 両方が同じである場合、なぜツールは「String」と「UInt32」に「string」と「uint」を使用することを提案するのですか?
  2. また、ドットネットタイプとC#タイプの違いは何ですか。

それをグーグルで検索しましたが、満足のいく答えを見つけることができませんでした。ありがとう。

4

3 に答える 3

6

Rafalの答えはそれを要約していますが、私が言いたいことがいくつかあります。型名ではなくキーワードを使用する必要がある場合は、列挙型の基になる型を定義する場合のみです。この場合、後者は許可されません。

例:

enum Foo : Int32
{
}

上記はコンパイルされません。

また、私は一般的にキーワードを使用することを好みますが、.NET Frameworkで実行されているすべての言語でタイプは同じですが、キーワードは異なります。たとえば、C#longではのエイリアスですInt64が、C ++/CLIではlong実際にはInt32です。たとえば、CLI言語間でコードを移植する場合、混乱が生じる可能性があります。

于 2013-01-07T06:38:57.220 に答える
1
  • Stringstringは同じで、UInt32とも同じuintです。

これはCLSに準拠しているためであり、C#クラスライブラリを記述してVBプログラムで使用したり、その逆を行ったりすることができます。

MSDNからの抜粋:

実装された言語に関係なく他のオブジェクトと完全に対話するには、オブジェクトは、相互運用する必要のあるすべての言語に共通する機能のみを呼び出し元に公開する必要があります。このため、多くのアプリケーションで必要とされる基本的な言語機能のセットであるCommon Language Specification(CLS)が定義されています。CLSルールは、共通型システムのサブセットを定義します。つまり、CLSでより厳密なルールが定義されている場合を除き、共通型システムに適用されるすべてのルールがCLSに適用されます。CLSは、開発者がさまざまな言語で利用できるようにするために信頼できる一連の機能を定義することにより、言語の相互運用性を強化および保証するのに役立ちます。

共通言語仕様を参照してください

于 2013-01-07T06:40:51.537 に答える
0

あなたが指摘したように、それらはエイリアスであるため、との間に違いはありません-エイリアスは同じものの単なる異なる名前Stringです。string

Resharperが何かをする理由については、resharper専用サイトで質問または検索する必要があります。私の意見では、それは単に慣習の問題です-あなたはそれらの1つを使うべきであり、そしてなぜ大多数が使うものを使わないのですか?

于 2013-01-07T06:34:20.127 に答える