C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: C#について


(過去ログ 136 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■79987 / inTopicNo.1)  C#について
  
□投稿者/ ピル (1回)-(2016/06/03(Fri) 08:25:39)

分類:[.NET 全般] 

最近C#を始めているのですがわからない頃があるので
宜しくお願いします。
VBでは、例えばladel1.Text=ladel1.Text+1
とすると123456789とどんどんたされていくのですが
C#だと横に1111111111になってしまのですがどうしてですか?
ほかのやり方があるのですか?
引用返信 編集キー/
■79988 / inTopicNo.2)  Re[1]: C#について
□投稿者/ shu (876回)-(2016/06/03(Fri) 08:51:07)
No79987 (ピル さん) に返信
文字列と数値の足し算の問題ですね。
VBでは数値の足し算として扱われることがありますがC#では
文字列連結として扱われます。やりたいことを明確にする為に
型変換をして数値と数値の足し算になるようにした方がよいです。


> 最近C#を始めているのですがわからない頃があるので
> 宜しくお願いします。
> VBでは、例えばladel1.Text=ladel1.Text+1
> とすると123456789とどんどんたされていくのですが
例えば
ladel1.Text=(CInt(ladel1.Text)+1).ToString()
とした方が良いです。


> C#だと横に1111111111になってしまのですがどうしてですか?
> ほかのやり方があるのですか?
C#の例
ladel1Text = (int.Parse(ladel1.Text) + 1).ToString();


ladel1.Textが整数に変換できる内容であることが前提ですので
処理内容によっては事前にチェックとかTryParseを使用するなどして
例外対策を行う必要があります。

引用返信 編集キー/
■79989 / inTopicNo.3)  Re[1]: C#について
□投稿者/ 魔界の仮面弁士 (739回)-(2016/06/03(Fri) 09:36:23)
No79987 (ピル さん) に返信
> VBでは、例えばladel1.Text=ladel1.Text+1

「Option Stict On」にしていた場合、VB で上記は使えなくなります。

label1.Text プロパティのデータ型は String、
リテラル「1」のデータ型は Integer 型であり、
それぞれのデータ型が異なるからです。



> C#だと横に1111111111になってしまのですがどうしてですか?

VB の場合:
 「数値 + 文字列」や「文字列 + 数値」は「Double型としての加算」の意味です。
 「数値 & 文字列」や「文字列 & 数値」ならば「文字列連結」の意味です。

C# の場合:
 「数値 + 文字列」や「文字列 + 数値」は「文字列連結」の意味です。


ちなみに「"123" * 4」を実行した場合、
 VB は「Double 型の 492」
 C# はエラー
 PowerShell は「String 型の "123123123123"」
だったりします。


> ほかのやり方があるのですか?
Label は「表示」に特化したものなので、
加算用の値は、別に用意しておいたほうが良いでしょう。


private int displayValue = 100;

public Form1()
{
  InitializeComponent();
  label1.Text = displayValue.ToString();
}

private void button1_Click(object sender, EventArgs e)
{
  displayValue++;
  label1.Text = displayValue.ToString();
}



もしも Label という「表示専用」のコントロールではなく、
「入力」にも対応したコントロールを使いたいのであれば、
NumericUpDown コントロールを使うことができます。

 numericUpDown1.Value += 1m;


どうしても、NumericUpDown ではなく、TextBox や Label を
使いたいというのであれば、データ型変換が必要です。

この場合、Convert.ToInt32 メソッドや int.TryParse メソッドなどを通じて、
Text プロパティ(string 型)から int 型への変換を行うことができます。
引用返信 編集キー/
■80036 / inTopicNo.4)  Re[2]: C#について
□投稿者/ ピル (3回)-(2016/06/06(Mon) 08:15:47)
皆さんありがとうございます。
まだなんとなくですが理科できました
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -