タグ付けされた質問 「c#」

C#(「seesharp」と発音)は、Microsoftによって開発された、静的に型指定された高レベルのマルチパラダイムプログラミング言語です。C#コードは通常、Microsoftの.NETファミリのツールとランタイムを対象としています。これには、.NET Framework、.NET Core、Xamarinなどが含まれます。このタグは、C#またはC#の正式な仕様で記述されたコードに関する質問に使用します。

1
この安全でないコードは.NET Core 3でも機能しますか?
Span<T>可能な場合はヒープ割り当てを回避するために使用するライブラリをリファクタリングしていますが、古いフレームワークも対象としているため、いくつかの一般的なフォールバックソリューションも実装しています。しかし今、私は奇妙な問題を発見しました。.NETCore 3にバグを発見したのか、それとも違法なことをしているのかはよくわかりません。 問題: // This returns 1 as expected but cannot be used in older frameworks: private static uint ReinterpretNew() { Span<byte> bytes = stackalloc byte[4]; bytes[0] = 1; // FillBytes(bytes); // returning bytes as uint: return Unsafe.As<byte, uint>(ref bytes.GetPinnableReference()); } // This returns garbage in .NET Core 3.0 with …
42 c#  stackalloc 

2
AccessibilityServiceを使用してAndroidで(X、Yマウス座標に基づいて)ドラッグを実行するにはどうすればよいですか?
X、Yマウス座標に基づいてAndroidでドラッグを実行する方法を知りたいですか?2つの単純な例として、チームビューア/ QuickSupportがそれぞれリモートのスマートフォンと「ペンオブウィンドウズペイント」で「パスワードパターン」を描画するとします。 私が作ることができるすべてはタッチをシミュレートすることです(dispatchGesture()そしてまたAccessibilityNodeInfo.ACTION_CLICK)。 これらの関連リンクを見つけましたが、それらが役立つかどうかはわかりません。 AccessibilityServiceを使用して画面をスワイプする 例1 継続的なジェスチャー 以下は、(PictureBox制御内の)マウス座標をリモート電話に送信し、タッチをシミュレートするために使用する私の作業コードです。 Windowsフォームアプリケーション: private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { foreach (ListViewItem item in lvConnections.SelectedItems) { // Remote screen resolution string[] tokens = item.SubItems[5].Text.Split('x'); // Ex: 1080x1920 int xClick = (e.X * int.Parse(tokens[0].ToString())) / (pictureBox1.Size.Width); int yClick = (e.Y * int.Parse(tokens[1].ToString())) / (pictureBox1.Size.Height); Client …

3
「{}」とはどういう意味ですか?
次のコードがときどき表示され、実際に式が何をテストしているのかわかりません。 public static void Something(string[] value) { if (value is { }) { DoSomethingElse(); } }
36 c#  c#-8.0 

1
.NET Coreにはどのメモリモデルが実装されていますか?
ECMA CLI仕様では、弱いメモリモデルが定義されています。これにより、コマンドの実行順序を並べ替えることができます(パフォーマンスに役立ちます)。しかし、そのようなモデルの低レベルのコードを書くことは非常に困難です。 そして最も重要なこと-X86 / AMD64プロセッサアーキテクチャには、より厳密な(強力な)メモリモデルがあります。その結果、MicrosoftはCLR実装に、仕様に記載されているよりも強力なメモリモデルを実装しました。 .NET Coreでメモリモデルは変更されましたか?潜在的に、このフレームワークは、X86 / AMD64よりも弱いメモリモデルのアーキテクチャで実行できます。 さらに、.NET CoreにはMonoやその他が組み込まれています。そして、私の知る限りでは、Monoメモリーモデルはより弱く、ECMAに対応しています。 この記事では、.NET 5の概要を説明します。 .NET Core、.NET Framework、Xamarin、Monoを最大限に活用して.NETの機能を拡張します。 したがって、今ではないとしたら、将来的にはこれらのランタイムが1つの全体にマージされると思います。 記事の下に書かれています: 現在、CoreCLRとMonoのドロップイン置換を相互に作成しています。異なるランタイムオプションから選択するビルドスイッチと同じくらい簡単にします。 私が正しく理解していれば、2つ(またはそれ以上)のランタイムがあります。そしておそらく誰もが独自のメモリモデルを持っているでしょう。 私たちは話している:メモリモデルを。
36 c#  .net-core 

1
ValueTupleを共変にするものは何ですか?
これはC#7.3(フレームワーク4.8)で正しくコンパイルされます。 (string, string) s = ("a", "b"); (object, string) o = s; これは次の構文シュガーであることを知っています。これも正しくコンパイルされます。 ValueTuple<string, string> s = new ValueTuple<string, string>("a", "b"); ValueTuple<object, string> o = s; したがって、ValueTuplesを共変的に割り当てることができるようです。これはすばらしいことです。 残念ながら、その理由はわかりません。C#はインターフェイスとデリゲートの共分散しかサポートしていないという印象を受けました。ValueTypeどちらでもありません。 実際、自分のコードでこの機能を複製しようとすると、失敗します。 struct MyValueTuple<A, B> { public A Item1; public B Item2; public MyValueTuple(A item1, B item2) { Item1 = item1; Item2 = …

3
HTTPエラー500.35-同じプロセス内のANCM複数のインプロセスアプリケーションASP.NET Core 3
今朝から、プロジェクトのコードを変更せずに、非常にシンプルなWeb API、1つのコントローラー、3つのメソッド、Swaggerを使用すると、起動しなくなり、エラーが発生します。 HTTPエラー500.35-同じプロセス内のANCM複数のインプロセスアプリケーション イベントビューアは、最も役に立たないメッセージを報告します。 IIS Express AspNetCoreモジュールV2:アプリケーション '/ LM / W3SVC / 2 / ROOT / docs'の開始に失敗しました、エラーコード '0x80004005'。 システムを数回再起動した。 私はVisual Studio 2019を使用していますが、アプリケーションは正常にコンパイルされ、数分前に問題なく動作しました。新しいソフトウェアはインストールされておらず、パッケージは追加されていません。クリーンとリビルドも試みました。 メソッドのコメントを変更しました。もちろん、以前のコメントも復元しようとしましたが、常に同じメッセージが表示されます。 私に何ができる? ネットコアはまだ不安定すぎて専門的に使用できませんか? 更新 同じバージョンのVisual Studioから起動された同じコードが別のPCで正しく実行されます。 アップデート2 アプリケーションのコードの下: startup.cs using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Hosting; using Microsoft.OpenApi.Models; using System; using System.IO; using …
34 c#  asp.net-core 

3
Net Core 3.0ではUseDatabaseErrorPage()拡張メソッドはありません
私はNet Core 3.0アプリを作成しましたが、2.2で動作する次のコードは現在はそうではありません。 app.UseDatabaseErrorPage(); 3.0のように見えるクラスDatabaseErrorPageExtensionsはMicrosoft.AspNetCore.Builder名前空間内に存在しません。依存関係が欠けていますか?EntityFrameworkCore NuGetにツールとデザインを追加しました。 追加 using Microsoft.AspNetCore.Builder; 助けられなかった。

6
C#ラムダを宣言してすぐに呼び出す方法はありますか?
ラムダ関数を宣言してすぐに呼び出すことが可能です。 Func<int, int> lambda = (input) => { return 1; }; int output = lambda(0); 私は一行でそうすることが可能かどうか疑問に思っています、例えば int output = (input) => { return 1; }(0); これにより、「メソッド名が必要です」というコンパイラエラーが発生します。へのキャストもFunc<int, int>機能しません: int output = (Func<int, int>)((input) => { return 1; })(0); 同じエラーが発生し、以下に述べる理由により、入力引数の型(最初のint)を明示的に指定する必要がないようにしたいと思います。 たぶん、コードを直接埋め込むだけでなく、なぜこれを実行したいのか疑問に思うでしょうint output = 1;。その理由は次のとおりです。を使用してSOAP Webサービスの参照を生成しましsvcutilた。ネストされた要素が原因で、非常に長いクラス名が生成されるため、入力する必要がありません。だから代わりに var o = await client.GetOrderAsync(request); return new …
29 c#  lambda 


3
Invokeメソッドを使用するとコンパイルが正常になり、Func <int、int>を直接返すと正常にコンパイルできないのはなぜですか?
私はこのケースを理解していません: public delegate int test(int i); public test Success() { Func&lt;int, int&gt; f = x =&gt; x; return f.Invoke; // &lt;- code successfully compiled } public test Fail() { Func&lt;int, int&gt; f = x =&gt; x; return f; // &lt;- code doesn't compile } Invokeメソッドを使用するとコンパイルが正常になり、csharp Func&lt;int,int&gt;直接戻るとコンパイルできないのはなぜですか?
28 c#  lambda  delegates 

2
空のIAsyncEnumerableを作成する
私はこのように書かれたインターフェースを持っています: public interface IItemRetriever { public IAsyncEnumerable&lt;string&gt; GetItemsAsync(); } 次のように、アイテムを返さない空の実装を記述したいと思います。 public class EmptyItemRetriever : IItemRetriever { public IAsyncEnumerable&lt;string&gt; GetItemsAsync() { // What do I put here if nothing is to be done? } } それが単純なIEnumerableである場合、私は return Enumerable.Empty&lt;string&gt;();、私はそうしますが、何も見つかりませんでしたAsyncEnumerable.Empty&lt;string&gt;()。 回避策 私はこれがうまくいくのを見つけましたが、かなり奇妙です: public async IAsyncEnumerable&lt;string&gt; GetItemsAsync() { await Task.CompletedTask; yield break; } 何か案が?

4
「宣言を使用する」機能は、C#7.3では使用できません。言語バージョン8.0以上を使用してください-あるマシンではエラーが発生しますが、別のマシンでは機能します
Visual Studio Enterprise 16.3.72つの別個のマシンで使用すると、1つは正常にビルドされ、もう1つのマシンはエラーをスローします。 「宣言を使用する」機能は、C#7.3では使用できません。言語バージョン8.0以降を使用してください。 これは、https://stackoverflow.com/a/48085575/3850405で提案さLangVersionれ.csprojているように設定するか、上記の印刷画面のようにVisual Studioで自動的に修正することで、動作しないマシンで簡単に解決できます。 &lt;LangVersion&gt;8.0&lt;/LangVersion&gt; 私が理解できないことは、なぜこの.csprojマシンがこのラインなしでうまく構築し、他のマシンがそれを必要とするのかということです。
24 c#  .net-4.6 

1
なぜCount()メソッドは「checked」キーワードを使用するのですか?
CountとCount()の違いを探していたので、のソースコードをちらりと見ようと思いましたCount()。次のコードスニペットを見て、checkedキーワードが必要である、または必要である理由を知りました。 int num = 0; using (IEnumerator&lt;TSource&gt; enumerator = source.GetEnumerator()) { while (enumerator.MoveNext()) { num = checked(num + 1); } return num; } ソースコード: // System.Linq.Enumerable using System.Collections; using System.Collections.Generic; public static int Count&lt;TSource&gt;(this IEnumerable&lt;TSource&gt; source) { if (source == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.source); } ICollection&lt;TSource&gt; collection = source as ICollection&lt;TSource&gt;; …
23 c#  checked 

1
親スコープの変数と同じ名前の子変数を宣言できるのはなぜですか?
同じ名前の変数がすでにある関数内で宣言されたアクションのパラメーターとして変数名を誤って再利用するコードを最近書きました。例えば: var x = 1; Action&lt;int&gt; myAction = (x) =&gt; { Console.WriteLine(x); }; 重複を見つけたとき、コードが完全にコンパイルされて実行されたことに驚きました。これは、C#のスコープについて知っていることに基づいて期待する動作ではありません。Laogda Scope Clarificationなど、いくつかの簡単なグーグル検索により、同様のコードがエラーを生成することを訴えるSOの質問が表示されました。(念のため、サンプルコードをIDEに貼り付けて、実行されるかどうかを確認しました。完全に実行されます。)さらに、Visual Studioで[名前の変更]ダイアログに入ると、最初の名前が​​名前の競合として強調表示されます。x このコードはなぜ機能するのですか?Visual Studio 2019でC#8を使用しています。

1
Directory.GetFilesがすべてのファイルを取得しない
ディレクトリ内のファイルを取得するためのコードがいくつかあります。 foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv", SearchOption.TopDirectoryOnly)) ファイルの名前は次のとおりです。 Totals.CSV142344 Totals.CSV142409 Totals.CSV142433 Totals.CSV142501 Totals.CSV142528 私の問題は、最後のファイルを取得していないことです。 代わりにこれを置くことでコードを修正しました: foreach (var Totalfile in new DirectoryInfo(rootfolder).GetFiles("*Totals*.csv*", SearchOption.TopDirectoryOnly)) Totalsと.csvの両方を含み、.csvの後ろにあるファイルを取得するとします。 取得できないのは、上位4つのファイルが取得されたが、最後のファイルが取得されなかった理由です。 元のコードがファイルを取得しないと思いましたか?
23 c#  filenames 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.