クラス内で多くの整数を処理したいので、それらをint*
配列に列挙しました。C#02 - プログラマとコンピュータのためにエラーcs0212をバイパスする方法?
int*[] pp = new int*[]{&aaa,&bbb,&ccc};
しかし、コンパイラは、次の口実と上記のコード減少しました:私は、私はこのエラーを回避するために上記のコードを変更することができます知っている
> You can only take the address of an unfixed expression inside of a fixed statement initializer
を。しかし、我々はddd
とeee
が将来アレイに加わることを考慮する必要がある。
public enum E {
aaa,
bbb,
ccc,
_count
}
for(int i=0;i<(int)E._count;i++)
gg[(int)E.bbb]
Dictionary<string,int>ppp=new Dictionary<string,int>();
ppp["aaa"]=ppp.Count;
ppp["bbb"]=ppp.Count;
ppp["ccc"]=ppp.Count;
gg[ppp["bbb"]]
これらのソリューションは、動作しますが、彼らは、コードと実行時間を長くします。
私はまた、コンパイラまたは非公式の新しいC#コンパイラへの非公式のパッチを期待していますが、私は何年も利用可能なダウンロードを見ていません。私たちのために持っていることは非常に難しいようです。
は、私は、配列ppp
の数をカウントする必要はありません
- ように、そこより良い方法です。
- コードが長くなると、複数の文字だけが長くなります。
- 実行時間はあまり増加しません。
ddd
およびeee
をアレイに追加するには、新しいメンバーごとに1つまたは2つの設定があります。
なぜ地球上でIEnumerableを使用していないのですか - リストなどですか?なぜポインタはリストよりも保守が簡単だと思いますか? –
user3791372
1)「言い訳」ではありません。固定解除されたオブジェクトへの参照を渡すことはできないため、エラーを「禁止」することはできません(コレクタによっていつでもメモリの周りを移動できます)。 2)また、「このコードを変更するとメンテナンスが難しくなります」と確信していますか?あなたは何をしようとしているのですか? – Groo
要するに、言語のルールを自分で変更することはできません。警告は抑止できますが、エラーは抑止できません。 –