X



ふらっと C#,C♯,C#(初心者用) Part154

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん (ワッチョイ 0fe3-wadS)
垢版 |
2022/02/09(水) 23:13:39.45ID:1A90hyai0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part153
https://mevius.5ch.net/test/read.cgi/tech/1639403601/
■関連スレ
C#, C♯, C#相談室 Part96
https://mevius.5ch.net/test/read.cgi/tech/1639965805/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries/
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries/
https://referencesource.microsoft.com/
https://source.dot.net/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0851デフォルトの名無しさん (ワッチョイ 7305-yYLg)
垢版 |
2022/06/13(月) 05:47:25.99ID:QonCP77t0
 switch文は各caseの末尾にbreak必須で、main関数もJavaと同様にクラスで囲い込まないと
いけなくて、それで同じ.net frameworkのプログラムを作るだけだからVBと同じだ。
 C#は関数にデフォルト引数が使えない。旧VB6の関数も使うならVBが良し、そして文字列
の扱いでは、VBならLike演算子も使える。C#でExcelを制御するCOM対応のDLLも作ったこと
もあるが、元々VBAでやることをDLLで作るなら、素直に同じ系統の言語であるVB(.net)でや
ればいいものを、何でC#で作るのか疑問だ。
 C#なら複雑な文字列の扱いはどうやってるんかいな。VBならLike演算子で済ませられるもの
でも、毎度正規表現クラスを使ったりしてるんかいな。
 C#はC++の良さもVBの良さも生かせない言語とちゃうんかいな。
0852デフォルトの名無しさん (ワッチョイ 7305-yYLg)
垢版 |
2022/06/13(月) 06:02:44.15ID:QonCP77t0
最も基本的なところの記述はCに似てるが、switch文のbreak必須仕様はVBのSelect Case文と結局同じで、
ヘッダーファイルというものはなく、#include文もなく、クラスの書き方はC++とは類似点が皆無と
言えるもので、実際にはVBのほうが十分に似てる。
0853デフォルトの名無しさん (ワッチョイ 7305-yYLg)
垢版 |
2022/06/13(月) 06:06:57.50ID:QonCP77t0
マネージ拡張C++ならボクシングやアンボクシングも必要になるところも、C#にはそれが
無くて、VBとの書き方は末尾にセミコロンを付けるだけの違いでしかない。
0854デフォルトの名無しさん (ワッチョイ ffad-gL1p)
垢版 |
2022/06/13(月) 07:10:47.00ID:SowNiufC0
>>851
VBと同じで何が問題なの?
Basicに慣れてる人はVB、C/C++に慣れてる人はC#、と多くの人に対してハードルを低くしてる

あと、デフォルト引数もあるし、Like演算子の代わりもあるよ
0855デフォルトの名無しさん (オッペケ Sr87-JPbs)
垢版 |
2022/06/13(月) 08:02:40.22ID:BEV+i+nur
トップレベルステートメントとか出たし、
VB使ってるからって妙にc#だけを意識してない?
活かせないとか皆無とか強い言葉で自分を守ろうとしてるのが見え見えで悲しい
0857デフォルトの名無しさん (スップ Sd1f-asUV)
垢版 |
2022/06/13(月) 08:10:48.55ID:si/cekt2d
デフォルト引数が導入されたのがC#4だから昔のC#を思い出しながら書いてるのかもしれん
0862デフォルトの名無しさん (アウアウアー Saff-APne)
垢版 |
2022/06/13(月) 12:17:04.72ID:C6CMrLssa
Int16,32,64の使い分けって必要でしょうか
メモリが非常に少ない環境であればシビアになるべきでしょうが
普通の環境であればInt32を使用すれば問題ないと考えていますが合ってますかね
0866デフォルトの名無しさん (ワッチョイ bf2d-IRXD)
垢版 |
2022/06/13(月) 13:15:12.88ID:DMu0O5hM0
>>864
Int16,Int32,Int64ではなく、それぞれの別名であるshort, int , longと記述することが多い
大抵のお手本はintとだけ書いてあるでしょ
long(Int64)は32bitでは表現出来ない大きな数値を扱う時に使う
それ以外はint(Int32)
short(Int16)はあまり使わないな
0872デフォルトの名無しさん (ワッチョイ cfbb-7/FS)
垢版 |
2022/06/13(月) 15:07:51.99ID:13gVP5w60
細かい型を使ってもRustみたいにメモリギチギチに詰めてもらえる訳でもなく、何をするにもキャストばかり発生・・・・使い所は難しい
0873デフォルトの名無しさん (ワッチョイ ff24-ISw1)
垢版 |
2022/06/13(月) 15:51:41.19ID:kOcD7AOC0
>>870
ビット単位で言うなら組み込み型そのまま使ってる時点で無駄にしまくり
上限値が分かってる場合はC/C++のビットフィールドを利用すると以下の3フィールドで4バイトしか使われない
int Year : 23; //MaxValue = 8388607
int Month : 4; //MaxValue = 15
int Day : 5; //MaxValue = 31
0874デフォルトの名無しさん (アウアウアー Saff-APne)
垢版 |
2022/06/13(月) 16:15:38.07ID:C6CMrLssa
>>866
そのshortを使わなくてよい根拠を知りたかったのです
サンプルやお手本がつかってないからではなく、ハードウェアの制限があるシーンで使うとか…
ただそんなシーンでC#は選ばれない気もしますが。

整数型以外も
>>867
にもありますが、例えばdouble型ってどういう用途で使うんでしょうかね。
decimalはお金等の電卓通りの計算になるような(ならないケースもありますが)項目に使いますよね。
floatはポリゴンの計算とか?

そういった数値型の利用シーンが知りたかった次第です。
0877デフォルトの名無しさん (ワッチョイ 13da-xATt)
垢版 |
2022/06/13(月) 17:39:01.23ID:eBuUTzcD0
o/rマッパのコードファーストでテーブルカラム定義する場合にもよく使う。
postgreのsmallintならC#のshortとか。

また小型機器なんかとバイナリ通信する場合もshortが2バイト幅って原理を使って通信フォーマット組み立てたりする
0880デフォルトの名無しさん (アウグロ MMdf-DBHA)
垢版 |
2022/06/13(月) 18:29:01.50ID:ijJWQwGQM
っていうか用途はあくまでも○○ってケースが多いねってだけ
占いや天気予報の類

マニュアルなどの最小最大の仕様や今回の目的にあった型を変数ごとに決定しないと駄目
結構辛い作業になることもある
0881デフォルトの名無しさん (アウアウウー Sa67-hiZJ)
垢版 |
2022/06/13(月) 20:24:19.87ID:iGSNe98na
audioデータは16の方が32や64より多いな
0883デフォルトの名無しさん (ワッチョイ bfba-APne)
垢版 |
2022/06/13(月) 22:49:16.87ID:nsYJGXTe0
>>877
postgreのドキュメントには、integerが一番バランスが取れているからsmallint使うのは限定的とあるね。
.NETでも同じことが言えるのでは。

integer型は数値の範囲、格納サイズおよび性能において最も釣合いが取れていますので、一般的に使用されます。 smallint型は一般的にディスク容量に制限が付いている場合にのみ使用します。 bigint型はintegerの許容範囲では十分ではない場合にのみ使用すべきです。 integerデータ型の方がずっと速いからです。
0885デフォルトの名無しさん (ワッチョイ 63c0-yYLg)
垢版 |
2022/06/14(火) 02:46:01.05ID:TDtroYoO0
>>854
 同じだから、あんなのどっちでも普通に書けてハードルはない。
 vbとc#は相互に書き換えができる。
 決してCを継承した言語ではないのにC#って名前が実態と合ってない。
 で、Like演算子の代わりって何。VBでは使えずC#でのみで使える何かがあるんかいな。
0886デフォルトの名無しさん (ワッチョイ 63c0-yYLg)
垢版 |
2022/06/14(火) 03:12:49.82ID:TDtroYoO0
>>845 >>846
 プログラム初級者だな。
 文末のセミコロンの有無と、ブロックの先頭が"{"末尾が"}"かどうかの違いだけで判断して、全然違うと思い込んでしまう人か。
その基準で言えばC++に似た言語と思ってるのかもしれんが、実際にはC#は決してCを継承した言語ではなく、C++やCと何ら
似ているものはない。
 見かけ上は、C++の改良言語。
 フタを開ければ中身はVB。このVBを、VBに見えなくするように構文を変化させただけのものでしかない。
 実際に、いつもVB使っててC#は使ってなかったが、業務で初めてC#のプログラム改修も、言語の問題で行き詰まりはなかった。
 このことからも、やはりC#はVBだ。
0893デフォルトの名無しさん (ワッチョイ 13da-xATt)
垢版 |
2022/06/14(火) 08:58:54.22ID:fCQzlF2p0
>>883
俺には数百万以上のレコードが見込まれるテーブルに対して、smallintで済むカラムをintには変更できないw
まぁ容量無視できる小さいテーブルならintでもいいんじゃないですかね。ケースバイケース
0895デフォルトの名無しさん (スッップ Sd1f-G2Bj)
垢版 |
2022/06/14(火) 09:09:44.70ID:VOaVS0+Qd
インターフェースのデフォルト実装もVBでは使えないはずだけど、デフォルト実装を持ったインターフェースをVBで触ったらどうなるんだろ
既存インターフェースに安全にメンバを追加するための機能だから、良かれと思ってメンバを追加したらVBユーザーが切り捨てられるという悲しい事態になるんだろうか
0897デフォルトの名無しさん (ワッチョイ f3f6-hiZJ)
垢版 |
2022/06/14(火) 11:27:32.30ID:Rf4XfD/C0
>>846
CLIっていう意味なら判るんだが
0898デフォルトの名無しさん (ワッチョイ f3f6-hiZJ)
垢版 |
2022/06/14(火) 11:28:44.62ID:Rf4XfD/C0
886 はアホだという意味なら同意
0900デフォルトの名無しさん (ワッチョイ 835f-GGE9)
垢版 |
2022/06/14(火) 11:54:05.17ID:yNn4pitq0
やたらとLike演算子持ち上げてるからドキュメント見たけど
普通にVB6相当の機能でワロタ
これがRegexの代替になると思ってるのか…
0902デフォルトの名無しさん (ブーイモ MMff-LqX/)
垢版 |
2022/06/14(火) 12:29:40.20ID:wsz8dOniM
>>896
その単純計算は影響を小さく見過ぎ
indexやfill factorとかカラムの大きさ/レコード長はいろんな要素に関わってくる

それにストレージサイズよりも一番大きな影響は1ページに収まるレコード数か減りあらゆる処理速度が低下すること
要求性能次第では致命的になるから気をつけて
0913デフォルトの名無しさん (ワッチョイ 6ffe-yYLg)
垢版 |
2022/06/14(火) 22:07:44.90ID:15Fa3aJQ0
>>912
別言語のように見せてるだけで、中身の実体は同じだ。
C#で学んだプログラムの作り方を、そのままVBにも適用できるのだから、同じ言語だ。
いつもVB使ってC#は未経験なものの、業務でC#で既存の改修と、それともう一つC#での新規の開発を
頼まれたことがあったけど、普通にやり遂げた。それはC#というのは、実質はVBと同じだからだ。
0914デフォルトの名無しさん (ワッチョイ e3ac-JPbs)
垢版 |
2022/06/14(火) 22:17:40.97ID:p687pJoB0
>>913
いやだから具体的にどこが同じなん
違うところはいっぱいあると思うけど(それこそ宣言の仕方とか)、それでも「似ていることが」じゃなくて「同じ」て言い張る根拠があるんやろ
0915デフォルトの名無しさん (ワッチョイ 6ffe-yYLg)
垢版 |
2022/06/14(火) 22:25:58.13ID:15Fa3aJQ0
>>914
宣言の仕方のような、外側の見かけは違っていて、そこしか見れなくて違うとしか思えないのは、適性に疑問だな。
中身の実体を見て、本質を理解したら同じだということがわかる。
0919デフォルトの名無しさん (ワッチョイ 335f-Wc3G)
垢版 |
2022/06/14(火) 22:45:04.27ID:xBe9hVtf0
c#とVisualBASIC.NETはどっちもネイティブじゃなくて
.netフレームワーク上で動くからコンパイルした後は同じ物だな

VisualBASIC6.0の代替として開発された物なんだけど
中途半端にVB6.0と似てるので混乱を招いて非難轟々
VBと言うと普通VB6.0を指してVB.netの略称としては使われない
0921デフォルトの名無しさん (ワッチョイ 335f-Wc3G)
垢版 |
2022/06/14(火) 22:58:23.55ID:xBe9hVtf0
VisualBASIC6.0のソースを楽に.net環境に移植出来るのが
VisualBASIC.NETが作られたMSの目論見だったが
中途半端に仕様が違うのでVisualBASIC6.0を使い続けるか
C#に流れる人が殆どでVisualBASIC.NETはマイナーな開発環境となってしまった
0923デフォルトの名無しさん (ワッチョイ 835f-GGE9)
垢版 |
2022/06/14(火) 23:11:08.49ID:yNn4pitq0
>>909
>>851で書いてる
> C#なら複雑な文字列の扱いはどうやってるんかいな。VBならLike演算子で済ませられるもの
> でも、毎度正規表現クラスを使ったりしてるんかいな。

これは、Like演算子がRegex.IsMatch()と同等の機能を提供してると言ってるのと同じだよね?
もし違う意図だというのならプログラム言語の前に日本語学び直した方がいい

あとやたら同一同一言ってるが、unsafeはどうなんだよ
0924デフォルトの名無しさん (ワッチョイ 732f-TFwb)
垢版 |
2022/06/14(火) 23:16:54.98ID:f8wm+Q+w0
名前の最初の文字が大文字か小文字については、
JavaならClassは大文字、フィールドは小文字、メソッドは小文字、ローカル変数は小文字、定数だけは最初の文字に限らずすべて大文字、と定番的ルールがあったけど、
C#ではどうなってますか?
いろんな本読んでますがバラバラな印象。
自分的C#のルールとして、Classは大文字、フィールドは小文字、プロパティは大文字、メソッドは大文字、ローカル変数は小文字、定数だけは最初の文字に限らずすべて大文字、にしてもいいですか?
0928デフォルトの名無しさん (ワッチョイ 6ffe-yYLg)
垢版 |
2022/06/14(火) 23:33:32.91ID:15Fa3aJQ0
>>923
同じではない。同等の機能を提供してると言ってると思い込んだのは、大きな誤読だ。
より本格的に文字列のパターンを評価をするには、正規表現クラスが必要にはなるものの、Like演算子で間に合わせられる
事例のものなら一手間省けるが、C#ではまさか毎度正規表現クラスを用意するしかないのかなと疑問を感じての問いかけだ。
0930デフォルトの名無しさん (ワッチョイ e3ac-JPbs)
垢版 |
2022/06/14(火) 23:54:24.62ID:p687pJoB0
>>915
だからその「中身」の「実体」って具体的にそれぞれ何を指しててどう同じなんだよw
「本質」ってどの本質のことだよw
そのふわふわ言うクセどうにかしろよw
そもそもコードの見た目も機能も名前が違えば言語としてもう違うことになると思うが?
それを押して「同じ」っていう根拠が主観過ぎるんだよ

今そっちは、例えばdiff取ったとき同一にならなくても「ファイルは同じだ」って言い張ってるようなもんだぞ

Wc3Gが言うVB.NETが.NETとして同じものだ、っていう主張は理解できるよ
言語仕様としては違うと思うけど、
お互いunsafe以外出来るできないの機能的な差自体は少ないやろ、当たり前やけど。

でも「VB」と「c#」は「同じ」と軽々と断定出来ないと思うよ。少なくともワイには言えない
0931デフォルトの名無しさん (ワッチョイ 835f-GGE9)
垢版 |
2022/06/14(火) 23:57:20.95ID:yNn4pitq0
>>928
> まさか毎度正規表現クラスを用意するしかないのかな

いや今時のIDE使ってたらいきなりRegexって書いても補完機能呼べば自動でusing付与までしてくれるでしょ
「Like」って書くのとなんら変わらん
メモ帳でコーディングしてるのか?
0933デフォルトの名無しさん (ワッチョイ 6ffe-yYLg)
垢版 |
2022/06/15(水) 00:02:03.02ID:UJXVHFk50
>>923
unsafeの話を持ち出したが、そういった特殊で普段は一般には使わないところにまで、細かく意識して議論するつもりはない。
特殊な事例も含めて、厳密に正確を突き詰めないといけない何らかの場ならともかく、たかが(初心者用)の名前のつくスレッ
ドの場だ。
多くの物事には、原則だけでなく、例外というのものあるのは当たり前なことだ。
0935デフォルトの名無しさん (ワッチョイ a3da-pz7P)
垢版 |
2022/06/15(水) 00:15:55.63ID:xH4/Idj90
C++/CLIも同じだーって言い出すんじゃないの?
0936デフォルトの名無しさん (ワッチョイ 6ffe-yYLg)
垢版 |
2022/06/15(水) 00:16:44.65ID:UJXVHFk50
>>930
C#とVBのコードを相互に書き換えができれば、同じ実体であり、本質であるものを双方に持ち合わせている。
これでも納得できなければ、元のソースと書き換えた言語ソースのコンパイルしたものを、それぞれ逆コンパイルして比較すればはっきりする。
何がふわふわなんだ。これで十分な話だ。ほかに何を求めるのか。
0941デフォルトの名無しさん (ワッチョイ e3ac-JPbs)
垢版 |
2022/06/15(水) 00:32:47.91ID:aOT9guvq0
>>936
1行目がまたふわふわしてんなあw
そりゃあ.NET使ってりゃ合わせようとすれば同じになるわw
でも言語として「VB」と「c#」が「同じ言語」と言い切ったんだぞ?
コンパイルして同じものができれば全部「同じ」言語か?
言語仕様も同じか?片方は言語として今後積極的にアップデートもされないとされてるのに同じか?

その程度の認識で普段も「同じ」って言葉使ってるの?こええよw
10数年前ならいざしらず、今の現場とかで「VBとc#は同じだ」なんて言ったら鼻で笑われるぞw
0945デフォルトの名無しさん (ワッチョイ cfbb-fWzm)
垢版 |
2022/06/15(水) 00:52:28.66ID:BW8MTfJu0
>>933
>unsafeの話を持ち出したが、そういった特殊で普段は一般には使わない
C#でアンマネージリソース扱うのなんて珍しくもなんともないだろw
OS標準の簡単なUIプログラミングしかしたことなさそう

釣りなのか知らんけどテンプレ読めないアホは別スレ行け
0949デフォルトの名無しさん (ワッチョイ 732f-b1tp)
垢版 |
2022/06/15(水) 01:00:13.01ID:C/XRb82A0
>>936
>C#とVBのコードを相互に書き換えができれば
VB.NETでできてc#にできないこととかあるんだが
言語仕様だって全く違うわけで、同じなのは.NET Frameworkを使うってだけ
ただ、それがc#とVB.Netのプログラミングのほとんどだったりするだけだ
レス数が950を超えています。1000を超えると書き込みができなくなります。

ニューススポーツなんでも実況