3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[C#] 文字リテラルに文字が多すぎます ←いや多くないが?

Last updated at Posted at 2022-11-10

状況

string hoge = "<title>hoge"
string huga = Regex.Replace(hoge,'<Title>',"");

※Qiitaだと赤く注意してくれますが、Visual Studio 2022だと何も表示してくれません…

出力結果

error CS1012: 文字リテラルに文字が多すぎます

別に文字数多くないのに何故文字が多すぎるとか出るんすか…と思ってたら

「文字」と「文字列」って違うよね

C#では文字と文字列の扱いが明確に異なります

char型は「文字」を扱う
string型は「文字列」を扱う

文字(char型)はシングルクォーテーション「’’」
文字列(string型)はダブルクォーテーション「””」で囲うという決まりがあります

なので今回は
「「文字」リテラルに「文字」が多すぎます」
つまりシングルクォーテーションで文字の型なのに文字列じゃねーかっておっしゃっているんですね

基本中の基本っぽいのに他の言語と同じノリで使うとこうなります
文字と文字列の違いを意識しながら開発していかないといけないですね

余談1

var hoge = "a";

一文字でもダブルクォーテーションで囲えば文字列になります(当たり前ですが)

余談2

char huga = '𣖔';

このような漢字一文字でも冒頭の
「リテラルに文字が多すぎます」
というエラーが出る場合もあります
(他にも𧾷(足へん)、𩸽(ほっけ)など)
これはchar型が2バイトであり、2バイト以上の複雑な漢字は収まらないのでエラーになるようです
(これはchar型がunicodeをベースに作成されていることから起因しているそうです、詳しく調べねば)

3
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?