C#, C♯, C#相談室 Part94

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 935f-5Uxj)
垢版 |
2019/03/20(水) 18:57:36.47ID:ZZcTomnN0
!extend:checked:vvvvv:1000:512
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part93
http://mevius.5ch.net/test/read.cgi/tech/1492818720/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
1915 (アウウィフ FFe9-8H9x)
垢版 |
2020/04/06(月) 15:36:35.10ID:TxMJ3ToxF
すみません間違いました
not blittable が出るのは
struct s2 の中に class c1 があるとして
GCHandle h = GCHandle.Alloc(s2, GCHandleType.Pinned);
IntPtr ptr = hndl.AddrOfPinnedObject();
// ptr を利用
h.Free();

ちなみに
struct s2 の中に struct s1 があるとして
同じことをしたときは問題無いです
20デフォルトの名無しさん (アウウィフ FFe9-8H9x)
垢版 |
2020/04/06(月) 15:40:47.44ID:TxMJ3ToxF
>>18
struct を定義するときにメンバに class があるとき
その class を blittable にする方法を知りたいです
2020/04/06(月) 16:24:25.71ID:sF8ihuq40
そのclassの内容によるとしか…
無制限にマーシャリングできるわけでもないし
classのメンバがblittableならそのままstructにすりゃいいだけだけど

参考になるか知らんがstringを含む場合

[StructLayout(LayoutKind.Sequential)]
struct Foo {
 public int id;
 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
 public string name;
}

class Program {
 static void Main(string[] args) {
 var sizeInBytes = Marshal.SizeOf<Foo>();
 Console.WriteLine($"SizeOf={sizeInBytes}");

 var coTaskMem = Marshal.AllocCoTaskMem(sizeInBytes);

 var foo = Marshal.PtrToStructure<Foo>(coTaskMem);

 foo.name = "John";
 Console.WriteLine(foo.name);

 Marshal.DestroyStructure<Foo>(coTaskMem);

 Marshal.FreeCoTaskMem(coTaskMem);
 }
}
22デフォルトの名無しさん (アウウィフ FFe9-8H9x)
垢版 |
2020/04/06(月) 16:44:22.28ID:TxMJ3ToxF
>>21
そもそも内側は struct で充分なんですが
初期値を入れたいのでそのためには class でないといけないとしたら
class にするとエラーになるのでやっぱり困るっていう話です
struct でデフォルト値入れられないと割り切れば済む話です
2020/04/06(月) 18:03:23.76ID:7X8pPa4E0
2度手間っていうか面倒くさいけどStructureToPtrでバイトストリームに一括で変換するのが
目的ならば、外に見せる部分はclassで作っておいて中にstructを定義する
structの要素にはプロパティでget/setする初期値はclassのコンストラクタで設定
classにバイトストリームを取り出す(StructureToPtrに絡むロジック)メソッドかプロパティを
定義するみたいなのじゃダメなのかな
class point {
 public point () {
  x = 0;
  y = 0;
 }

 private _point _Struct;
 public int x {
  get { return _Struct.x; }
  set { _Struct.x = value; }
 }
 public int y {
  get { return _Struct.y; }
  set { _Struct.y = value; }
 }
 public byte[] bytestream {
  get { return structToPtrFunc(_Struct); }//メソッドは別途作成
 }

 [StructLayout(LayoutKind.Sequential)]
 private struct _point {
  int x;
  int y;
 }
}
24デフォルトの名無しさん (エムゾネ FF43-8H9x)
垢版 |
2020/04/07(火) 10:26:44.15ID:KScFPzRrF
むしろ StructureToPtr を使いたくないっていう話です
やりたいのはこっちです
GCHandle h = GCHandle.Alloc(s, GCHandleType.Pinned);
IntPtr ptr = h.AddrOfPinnedObject();
// ptr 操作
h.Free();
途中のレスで一回変な事を書いてしまったので混乱させてごめんなさい
25デフォルトの名無しさん (エムゾネ FF43-8H9x)
垢版 |
2020/04/07(火) 10:30:31.32ID:KScFPzRrF
意図は「無駄なコピーを極力避けたい」です
2020/04/07(火) 10:59:30.33ID:FIqFPKAc0
なら参照型にすればメモリ領域は節約できるでしょ。
2020/04/07(火) 13:31:26.68ID:10XGXpve0
意図がそれならそもそもなんで親に値型使ってんのってところまで後退しちゃうぞ
値型にGCHandleのピン付けってそこだけ見ると意味不明だし
省略している「ptr操作」の内容次第では初っ端からアプローチを間違えてる可能性がある
28デフォルトの名無しさん (ワッチョイ 2b7c-Wy2p)
垢版 |
2020/04/07(火) 13:56:15.48ID:xToLYP7L0
Cの構造体って構造体の中に別の構造体入れてもコピーが発生する訳じゃない
(子の構造体をいちいち作る訳じゃないから)
C#をCと同じと思わない方が良い
2020/04/07(火) 18:25:34.04ID:hoGla/3+0
>>28
C#の場合、classは、Heapに実態を確保して変数は参照型で、
structは、スタックなどに実態を確保して、変数は値型だと
聞きました。
C++は、strucとclassは、protected/public などのaccess control以外に
違いが無いこととは対照的です。
というわけで、C#の場合でも、structに関しては別のstructの中に入れた場合
は、C++と同じような動作なのではないかと思われます。
2020/04/07(火) 19:08:13.99ID:yHbrhPie0
そもそも、「無駄なコピー」ってのがどんな想定なのかわからん
2020/05/27(水) 18:07:50.45ID:LUVXPnpcr
質問いいですか?
C#のアセンブリの読み込みってどういう手順で行われてるんですか?
同じバージョンの.net core から.net coreを呼び出してるのにTypeIntializationExceptionが発生します
たぶん正しいアセンブリが読み込めてないのだと思うのですが、アセンブリの読み込みタイミングやバージョンを指定することは可能なのでしょうか
2020/05/27(水) 18:29:21.50ID:LUVXPnpcr
上のお話見てると突き詰めれば値型と参照型の定義の問題になってきそう
C#の構造体は中に値型以外を詰め込むとその部分はCレベルで言うポインタのポインタを保持する形になってコピー時の挙動以外はclassと大差ないものになっちゃうよね
ポインタのポインタの値型だと言えばそうなのかもしれないけど
2020/05/27(水) 21:06:51.81ID:wHIUQvvs0
>>31
単に静的コンストラクタ内で例外が出てるだけじゃね?
例外型だけじゃなくて例外メッセージやスタックトレースも読んで
2020/05/27(水) 23:51:33.69ID:LGEhqROa0
参照してるdllにエントリポイントがないと言われるだけでそれ以上検索してもなにも出てこないです

こう聞いた方がいいのかもしれないです
.net frameworkの時は自前でシステムのアセンブリ参照できましたが
.net coreにも似たような仕組みはあるのでしょうか

こういうアセンブリ関係の問題は.net frameworkの時は自前で参照加えたらできたんですけど
.net coreになってフレームワーク二つしか選択肢がなくなって細かい参照が出来なくなってますがそれはどこがどういう風に解決してるのでしょうか?

特定のライブラリが使いたいというよりそこら辺の内部仕様が知りたいです
2020/05/27(水) 23:59:10.55ID:LGEhqROa0
あ、アセンブリが読み込めてないと思った一番の理由はdllでなくプロジェクトにcsで組み込んだらちゃんと動いたからです
そういう意味で言語レベルでのミスはないです
36デフォルトの名無しさん (アウアウエー Sa23-1zQY)
垢版 |
2020/05/28(木) 11:28:38.46ID:vYrFHFhya
csc -reference:(.NetCoreのpath) hoge.cs でいけるよ
2020/08/09(日) 14:22:49.34ID:wMn4aE4e0
WindowsFormで写真データ取り込みを作ってるんですが、
DriveInfo.GetDrives()してもWindows10に接続して認証したあとの
iPhoneのドライブが読み取れず・・・
どうにか拾えないもんでしょうか?
2020/08/09(日) 18:07:11.93ID:xLYoDobK0
あれは普通のディスクとしてマウントされてるわけじゃなくてメディア転送プロトコルってやつだから、
それじゃアクセス出来ないと思う。
2020/08/09(日) 18:44:35.04ID:8DR9OUqp0
検索キーワード MTP、WPD かな
40デフォルトの名無しさん (スッップ Sd33-KRae)
垢版 |
2020/08/10(月) 07:48:42.24ID:sJEhM+RBd
>>38 >>39
ありがとうございます
よく調べてみます
2020/08/12(水) 23:54:10.55ID:i8qk9stm0
カレントディレクトリに
\data¥
というディレクトリを作成したいのですが、
どうすればいいのでしょう?
2020/08/13(木) 09:33:35.31ID:qi529V0c0
https://docs.microsoft.com/ja-jp/dotnet/api/system.io.directory.createdirectory?view=netcore-3.1
2020/08/14(金) 00:43:36.55ID:ZEhSJMBs0
>>42

できました。ありがとうございました。m(_ _)m
2020/08/16(日) 15:05:57.24ID:fvXawAJc0
機器構成の設定を記載したconfigファイルをアプリ上で作成して、
アプリ実行時にconfigの内容を変数に読み込むことを行おうと思ってます。

configファイルって普通どんなふうに書くんだろうと思って、
あるアプリのconfigファイルを覗いてみたところ下のような感じになっていました。

[Config]
StartUpLeft=-2147483648
StartUpTop=-2147483648
StartUpWidth=640
StartUpHeight=480
SaveWindowPosSize=1
SaveWindowRectLeft=597
SaveWindowRectRight=3645
SaveWindowRectTop=1256
SaveWindowRectBottom=3436
SaveWindowMaximize=0

このテキストファイルを
string line = sr.ReadLine();
// 読み込んだ一行をカンマ毎に分けて配列に格納する
string[] values = line.Split('=');

とすると偶数のvaluesに値が入ってるからこれを使用するみたいな感じでOK?
〇〇できちっと書けやぁ!みたいな形式があったら教えて下さい。
2020/08/16(日) 15:14:56.52ID:Apm8kmni0
profile でggr
2020/08/16(日) 15:30:58.63ID:fvXawAJc0
>>45
ググってみましたが難しい・・・。

アプリ内で変数を10個ぐらいもっていて
int hoge1=100
int hoge2=12


これをテキストファイルに保存し、必要なときに
int hoge1=100
int hoge2=12
にアプリ内で戻したいのですが、簡単に実現出来る方法があればいいなと思ったのですが・・・。
47デフォルトの名無しさん (アウウィフ FFa5-jwrZ)
垢版 |
2020/08/16(日) 15:39:24.55ID:43uVw8aVF
msgpack
48デフォルトの名無しさん (アウウィフ FFa5-jwrZ)
垢版 |
2020/08/16(日) 15:39:24.66ID:43uVw8aVF
msgpack
2020/08/16(日) 15:59:09.65ID:7n2hwSPz0
>>44
その形式は ini ファイルなので C# ini ファイルでググれば事例がいっぱい出てくるよ
基本はWin32APIのGetPrivateProfileString( )とかを使う
もし設定ファイルの形式をこれから決められるならjsonおすすめ
DataContractJsonSerializerクラスを使えば読み書きも簡単だし
2020/08/16(日) 17:07:59.63ID:06o4EVzRd
json xml csv ini
好きなのを選べ
51デフォルトの名無しさん (アウウィフ FFa5-jwrZ)
垢版 |
2020/08/16(日) 18:15:38.13ID:43uVw8aVF
SQLiteも良いぞ
2020/08/16(日) 19:19:49.11ID:WOuIdI6T0
まずアプリケーション構成ファイルを検討するべきだと思うんだが
2020/08/16(日) 22:09:22.28ID:fvXawAJc0
なんかどんどん難しくなってきました。
最近だxmlで書くのがデフォルトなんでしょうか・・・。
iniで書くのも結構荷が重い、気合い入れて勉強するべきか・・・。
54デフォルトの名無しさん (ワッチョイ 426a-p5K4)
垢版 |
2020/08/16(日) 22:11:13.68ID:k/QA8A3q0
>>53
>52 でggr
2020/08/16(日) 23:19:02.50ID:nvuv1Tdc0
>>53
https://dobon.net/vb/dotnet/programing/storeappsettings.html
https://dobon.net/vb/dotnet/programing/appconfigfile.html
設定ファイルなんか自由に作れるんだから最初に自分で書いたやつでいいのに
2020/08/16(日) 23:58:11.71ID:RfOjKn2y0
いまだとjson以外で書くことないな。
どんなプラットフォームでもjsonはサポートしてるし、どんなものでも入れられることがわかってるしね。
2020/08/17(月) 00:06:36.72ID:a2Z8AZRc0
ものによるやろ。xmlで書くこともあるし、もちろんjsonも。yamlだって最近は多いでしょ?
2020/08/17(月) 00:14:03.00ID:FrBqpQ/k0
xmlはめんどくさすぎるから、DTDでちゃんと定義したいとかじゃなかったら使いたくないな。もちろんケースバイケースなのはそうだけど。
改行区切り、タブ区切りとかもまだまだ場合によっては使うしね。
2020/08/17(月) 01:29:02.95ID:U9ZmQUIp0
カンマ区切りと固定長のまざった独自糞フォーマットでのIO書いたことはあるけど、自由に出来る時はjsonかxml
大体はjsonだけど、きちんと定義したデータ使いたいときにRelaxNGで定義してXMLで書いたことはある。
60デフォルトの名無しさん (ワッチョイ dd5f-c+0i)
垢版 |
2020/08/17(月) 10:22:34.64ID:L1BKvkJB0
些細な枝葉で悩む時間あったら
本体のプログラムで悩め
2020/08/17(月) 14:45:20.65ID:qSl9GgHf0
プログラマーはつい余計な事まで調べてしまう生き物なのです
2020/08/17(月) 17:51:52.39ID:LJQO1qfq0
調べるのはいいが掲示板で最初から聞くのは違うな
そしてどうでもいいことにこだわり始めるのはだいたい行き詰っているとき
2020/08/17(月) 18:41:16.65ID:fmYMlnoO0
選択肢が沢山あったら調べないと選べないわな
2020/08/19(水) 19:05:35.00ID:cHzrh2OwM
global::クラス名で
2つがバッティングしてます
外部からのdll2つなんで
namespaceつける等の変更できない
どう解決できる?
2020/08/19(水) 19:07:04.67ID:cHzrh2OwM
global::ファイル名.クラス名
とかできない?
2020/08/19(水) 19:54:53.70ID:maQwl2d20
>>64
https://www.atmarkit.co.jp/fdotnet/csharp20/csharp20_07/csharp20_07_02.html
2020/08/19(水) 20:17:03.21ID:cHzrh2OwM
ありがとー
2020/08/20(木) 00:21:28.68ID:r1uYCcYS0
ちょっとくだらない質問で申し訳ないんだけど
構造体の定義のソースってどうしてる?

クラス内に通信電文用の構造体をいっぱい作ったのだけど
ソースがでかくなっちゃうからpartial使ってわけた方がいいのか
あくまで一個のソース内にまとめるか・・・
2020/08/20(木) 00:37:16.53ID:zII9NukZ0
どれくらいでかいのかわからんけどあんま分けないかなー?
1万行超えるとかなら分けること考える
2020/08/20(木) 00:37:57.60ID:VY9dfKBD0
通信電文…
71デフォルトの名無しさん (エムゾネ FF9f-fHWV)
垢版 |
2020/08/20(木) 11:24:45.34ID:RX/3qqm6F
設計を見直す
2020/08/20(木) 19:14:02.34ID:3p9OuWNz0
分割しようかと迷う規模なら分割もありだと思う。
ベース部分は独立させて、機能毎に実装ファイルの頭に使用する下位レベルの電文を定義する。
電文は全部まとめるか?分割するか?ケースバイケースだね。
2020/08/21(金) 00:15:17.71ID:S3Udh9wa0
クラス内にネストさせるんじゃなくて
下位の名前空間作ってそこに構造体群を置けばいいよ
74デフォルトの名無しさん (ワッチョイ 7f6a-YpYZ)
垢版 |
2020/08/21(金) 00:57:13.38ID:Gtp12ERl0
>>68
クラス内に作らないで独立させれば良いのでは?
2020/08/21(金) 19:38:02.21ID:EuQicFr70
だいたい >>73 方式で、基本的には ファイル名 = クラス名 を目指すな。自分は。
2020/08/24(月) 21:06:09.96ID:RikpSc+F0
xamarin でTDDを勉強してるんだけど、

public event PropertyChangedEventHandler PropertyChanged;

この PropertyChanged 自体がnullになって例外で終わるのって
どういうパターンがあるんだろう・・・。

勉強したいことと全く別のところで長期足止め。わっけわからん状態。
2020/08/24(月) 21:08:36.33ID:aT1DNS2r0
>>76
https://i.imgur.com/irl4m3B.jpg
2020/08/24(月) 21:32:50.65ID:LR7hSPm30
>>76
ハンドラが1こも登録されてないとnullなんじゃないかな
2020/08/25(火) 00:40:04.02ID:xXAVzV+T0
>>77
やめろよ、普通の質問なのに。
Xamarinの話題も良いじゃん。
80デフォルトの名無しさん (エムゾネ FF9f-fHWV)
垢版 |
2020/08/25(火) 10:33:43.97ID:Zt9gBA2MF
ここで質問するより
直接ちょまどにツイートしろって意味かな?
返事来るかどうか知らんけど
2020/08/26(水) 15:08:57.61ID:7Xms6Gwm0
>>78
ありがとう。どうやら「どっかが+=してくれる」っていう前提なんだね、これ。

PropertyChanged?.invoke(this, e);

で呼び出したら動いた。現役じゃなくなって長いもんで(趣味のプログラム)、
このへんの書き方に苦労するなあ。
2020/08/26(水) 21:05:30.88ID:6US3/cP40
>>81
null条件演算子が出来る前はeventに空のdelegateを代入しておくテクニックがあった
public event PropertyChangedEventHandler PropertyChanged; = delegate {};
2020/08/26(水) 21:12:34.97ID:7Xms6Gwm0
>>82
あ。やっぱそうなんだ。「これ、ダミー関数入れときゃエクセプション
投げられないで済むんじゃねえのか?」って思った。


ところで1つ目のセミコロンて要るの?
2020/08/26(水) 21:15:17.42ID:6US3/cP40
>>83
途中のセミコロンはミスだよ
2020/08/27(木) 23:21:35.12ID:dU9vSxaE0
フォームアプリで
フォームAで検査をして、検査終了後に

「データを記録しますか?」
「はい」「いいえ」
というウインドウを表示して、
「はい」ならデータ記録
「いいえ」ならデータ廃棄

としたいです。
2020/08/27(木) 23:23:39.98ID:dU9vSxaE0
データはフォームAにあるので、

1. フォームAからフォームBを開く
2. フォームBは「はい」「いいえ」を戻り値としてAに渡す
3. フォームAでデータ記録、データ廃棄の処理を行う

みたいな処理でいいのでしょうか?
それとももっとよいやり方がありますか?
2020/08/28(金) 00:01:20.33ID:IRRC70To0
>>86
これじゃあかんの
https://dobon.net/vb/dotnet/form/msgbox.html
2020/08/28(金) 00:27:25.73ID:ljA+yCxF0
ありがとうございます。
これですね。

なんかフォーム新たに作るとかこんなめんどくさいことしなきゃいけないのか?
と疑問に思ってたんですが、聞いてよかったです。
ありがとうございます。
明日実装してみます。
2020/08/28(金) 00:45:40.60ID:QGPxocm50
MessageBoxを知らない子供達さ〜
2020/09/02(水) 22:47:24.65ID:uEUYmCsp0
C#からpythonのプログラムをコマンドライン引数hoge付きで実行したのですが、

System.Diagnostics.Process.Start("python.exe", @"""L:\main.py hoge""")

とやっても実行できません。
なにかより方法ないでしょうか?
2020/09/02(水) 23:26:38.05ID:dpuRzFGP0
なぜスクリプトファイル名と引数をダブルクォートでひとくくりにしてる?
2020/09/02(水) 23:30:40.61ID:uEUYmCsp0
>>91
分けて書いたら第3引数は取らないとエラーが出たのですが、
どう書けばよいのでしょう?
2020/09/03(木) 00:53:19.68ID:mQe+iHXO0
System.Diagnostics.Process.Start("python.exe", @"L:\main.py hoge")
2020/09/03(木) 21:24:36.01ID:9keo2Hbe0
>>93
ありがとうございます!
解決しましたm(_ _)m
2020/09/03(木) 22:26:34.29ID:a8iQwzgfM
Pythonスレにもちゃんと報告しような
96デフォルトの名無しさん (ワッチョイ 0701-3NJ+)
垢版 |
2020/09/04(金) 01:43:56.80ID:bkNZTAxK0
var sb = new StringBuilder();
var c = 'a';
while (true)
sb.Append(c);

これで一番下の行に破棄'_'を使用っていうVSによるヒントが出てくるんだけど、
こういう場合の破棄って使用する場合としない場合でどういう違いがあるの?
2020/09/04(金) 03:29:44.58ID:TqZk/BuV0
>>96
破棄は、未割り当ての変数と同等です。つまり、値がありません。
破棄変数は 1 つのみであり、破棄変数には記憶域も割り当てられないため、破棄を使用するとメモリの割り当てを減らすことができます。
また、コードの意図がわかりやすくなるため、読みやすさと保守性が向上します。
2020/09/04(金) 18:32:36.17ID:rMUAG7hVd
linqて出た頃はselectとか予約語になってたはずだけど、今は使わん方がいいの?
2020/09/04(金) 18:38:00.42ID:/sa+TO100
LINQやクエリ式を連想するからやめといた方がいい
2020/09/04(金) 20:52:19.83ID:lU7Szfms0
あくまでコンテキストキーワードだから当初から識別子として使えたよ
group辺りは変数名として割と使う
2020/09/04(金) 21:11:01.67ID:MHAfw/ead
groupって変数名としてほとんど何の情報も持たないし普通にバッドネーミングでは
GroupTheoryのGroupとかの専門用語でもない限り
2020/09/04(金) 22:52:38.00ID:/hXTsLtS0
>>101
右辺から意味がはっきりしてる寿命が短いローカル変数ならいいんじゃない?それこそlinqのグループバイの戻り値とか。まぁそんなんだったらgとかにしちゃうけど
2020/09/04(金) 22:55:02.48ID:MHAfw/ead
>>102
数行くらいの寿命ならまあたしかに
2020/09/13(日) 12:05:22.97ID:/5CZgoyc0
LINQの話題になってるから聞きたいんですが、LINQって結構遅い?
ベンチマークとって襲いって主張してるブログとかはあるけど、実業務で遅さを実感する事ってどのくらいある?
2020/09/13(日) 12:15:27.66ID:pEIp8weP0
LINQ使わないで書くよりも遅いことは遅いんだけど、経験的にはあんまり問題にはならなかった
実際に使ってみてどうしてもLINQ使ってる辺りでネックになるようなら、
そこだけ書き直す感じでいいと思う
2020/09/13(日) 12:21:40.35ID:tOkSvJ4p0
Linq使ったほうが楽に高速化できることもあるし、場合場合じゃないかな。
PLINQは良くコア数指定せずにぶん回して「遅い」って言ってる奴いるけど、コア数指定したら割と良い線行く。
2020/09/13(日) 15:15:56.81ID:SPHVq8sr0
処理速度が求められるような部分だとネックになってると感じることもある
シミュレーションみたいなのね
そういうの以外では全く気にならない
どうせ処理速度より通信やファイル読み書きのほうが圧倒的に時間かかるから
2020/09/13(日) 17:02:03.95ID:1OL+BwFGa
linq to sqlだと気付かずにクエリがクライアント側で行われるなんてことが無くはない
2020/09/13(日) 18:23:51.90ID:4Acyfihv0
ループのコストを気にするレベルの処理(数値計算とか)だとLINQは遅いが
大半の処理は0秒の範疇で終わるし遅さを実感できるタイミングは少ない
2020/09/13(日) 19:19:25.97ID:B0Qk5cLa0
>>108
なぜいまさら?
2020/09/14(月) 08:49:45.52ID:h4D3dIgFa
LINQは普段使い出来る
2020/09/15(火) 14:28:22.27ID:dHOvpMD80
むしろ普段使いこそLINQ

ガチで組むときだけ使わない
2020/09/15(火) 15:19:30.20ID:zwHnTqIb0
#metoo
2020/09/26(土) 09:10:33.60ID:z7P86v//0
ほぼC#経験しか無いのですが、最近iPhoneでアプリ作りにトライして貰いたいと言われました
経験的にC#とXamarinで作れたらと思うのですが、実用に耐えるものなのでしょうか?
王道のSwiftを覚えるべきでしょうか
オススメをお聞きしたいです
2020/09/26(土) 09:20:31.76ID:eGNdIrqPM
https://i.imgur.com/irl4m3B.jpg
2020/09/26(土) 09:27:09.80ID:jvAfHmw30
産まれながらに豪運をお持ちであるか
最終的に開発するアプリがごく小規模でないのなら、Swiftを薦めるかなあ

ネイティブのクロスプラットフォームフレームワークって機嫌よく動いているうちはいいんだけど
いざトラブルが起きた時、フレームワークそのものの知識と目的のプラットフォームの知識、両方がないと問題を解決できないのね
2020/09/26(土) 10:28:09.86ID:zTe0m+jEd
iOSの事はあんまりわからんけど、Androidの場合でも、結局Androidの記事を読むことになるから、ネイティブの知識は必要になるよ。
だから逆にネイティブの知識で何とかなるXamarinは好きなんだけど。

ネイティブに対してLinqが書けたり、C#のライブラリが使えるメリットを感じられなければ、ネイティブの方が良いと思う。
俺はサーバ側もc#で済ますときに圧倒的に楽だし、Linqめっちゃ使うし、LiteDBとか使いたいからXamarinは割と選択肢にしてる。

気持ち悪いとか、信者がどうとかそういう話に持ってくのはやめてほしいわ。
2020/09/26(土) 10:33:53.78ID:z7P86v//0
やはりネイティブで慣れた上が無難ですかね
情報量はネイティブのが多いのは確実でしょうし
アドバイスありがとうございます
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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