Discussion:
C#配列の宣言使いかたについて
(too old to reply)
C#Sharp.com
2006-02-03 11:27:47 UTC
Permalink
お世話になります。

下記の宣言でModel.name[0]:でコンパイルエラーが発生します。
なぜかわかりません。
教えて頂きたくよろしくお願いします。

public class Model
{
public const string[] name = { "5627" };
}

private void a(string ttt)
{
switch (ttt)
{
case Model.name[0]:--------------エラーとなる箇所
textDataW.Text = "1" + '\r';
SendfortheBCReader();
break;
}
}
Kaoru Kodaka
2006-02-03 12:50:44 UTC
Permalink
$B$+$*$/(B $B$G$9!#(B

On Fri, 3 Feb 2006 03:27:47 -0800
$B$J$<$+$o$+$j$^$;$s!#(B
public class Model
{
public const string[] name = { "5627" };
}
private void a(string ttt)
{
switch (ttt)
{
case Model.name[0]:--------------$B%(%i!<$H$J$k2U=j(B
$B$(!<$H!"%/%i%9$N%$%s%9%?%s%9$O$I$3$***@8@.$7$F$k$s$G$9$+!)(B

$B!t%3%s%Q%$%k%(%i!<$,=P$k$J$i!"$=$N%(%i!<$NFbMF$b=q$$$F$*$$$?(B
$B$[$&$,$$$$$G$9$h!#(B

---
MVP kaok = MVP.ChangeMvpCategory("for C# 2004-2006.");
kaok.Web = "http://www.antoine.st/";
Yukio Kishiue
2006-02-06 03:15:37 UTC
Permalink
Post by C#Sharp.com
public const string[] name = { "5627" };
$B!!;d$N4D6-(B(2003)$B$G$O!$>e5-$N$h$&$JG[Ns7?$NDj?t$***@k8@$G$-$^$;(B
$B$s!#(B2005$B$G$O$G$-$k$N$G$7$g$&$+!)(B
--
$B4_>e9,@8(B ( ***@mail.gosei.co.jp )
RFujioka
2006-02-06 09:00:29 UTC
Permalink
C#配列の宣言とありますが、これは配列宣言の問題ではなくConstの使い方の問題です。
..NetのConstはコンパイル時に評価されメタデータ化されますから、intやlongのような値型の単純型に使用されることがメインで、参照型としてはstringとnullのみが可能です。
今回 const string[]
と定義されたことでこれはSystem.Array型に対するconst宣言とみなされているため、コンパイラはこれに対する初期化はnull以外認めないというわけです。
static
readonlyを指定すればconstと同等の効果がありますが、caseは静的な値しか受け付けてくれないので、やはりここにその値をはめ込むのはできないのは自分でやってみてわかりました。
Post by C#Sharp.com
お世話になります。
下記の宣言でModel.name[0]:でコンパイルエラーが発生します。
なぜかわかりません。
教えて頂きたくよろしくお願いします。
public class Model
{
public const string[] name = { "5627" };
}
private void a(string ttt)
{
switch (ttt)
{
case Model.name[0]:--------------エラーとなる箇所
textDataW.Text = "1" + '\r';
SendfortheBCReader();
break;
}
}
C#Sharp.com
2006-02-13 08:17:28 UTC
Permalink
お世話になります。
すみません有難うございます。
下記の修正で対応が取れました。
ご教示有難うございました。

class Model {
public string[] name = new string []{ "5627" };
}

private void a(string ttt)
{
string a = Model.name[0];
switch (ttt)
{
case a:
textDataW.Text = "1" + '\r';
SendfortheBCReader();
break;
}
Post by RFujioka
C#配列の宣言とありますが、これは配列宣言の問題ではなくConstの使い方の問題です。
.NetのConstはコンパイル時に評価されメタデータ化されますから、intやlongのような値型の単純型に使用されることがメインで、参照型としてはstringとnullのみが可能です。
今回 const string[]
と定義されたことでこれはSystem.Array型に対するconst宣言とみなされているため、コンパイラはこれに対する初期化はnull以外認めないというわけです。
static
readonlyを指定すればconstと同等の効果がありますが、caseは静的な値しか受け付けてくれないので、やはりここにその値をはめ込むのはできないのは自分でやってみてわかりました。
Post by C#Sharp.com
お世話になります。
下記の宣言でModel.name[0]:でコンパイルエラーが発生します。
なぜかわかりません。
教えて頂きたくよろしくお願いします。
public class Model
{
public const string[] name = { "5627" };
}
private void a(string ttt)
{
switch (ttt)
{
case Model.name[0]:--------------エラーとなる箇所
textDataW.Text = "1" + '\r';
SendfortheBCReader();
break;
}
}
Loading...