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

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

1
プロパティのデフォルト値を介して関係を変更しようとすると、予期しないInvalidOperationExceptionが発生する
以下のサンプルコードでは、実行時に次の例外が発生しdb.Entry(a).Collection(x => x.S).IsModified = trueます。 System.InvalidOperationException: 'エンティティタイプ' B 'のインスタンスは、キー値' {Id:0} 'の別のインスタンスが既に追跡されているため追跡できません。既存のエンティティをアタッチするときは、特定のキー値を持つエンティティインスタンスが1つだけアタッチされるようにしてください。 Bのインスタンスをアタッチする代わりに追加しないのはなぜですか? 奇妙なことに、のドキュメントにIsModifiedはInvalidOperationException、例外の可能性が明記されていません。無効なドキュメントまたはバグ? 私はこのコードが奇妙であることを知っていますが、奇妙なegdeのケースでefコアがどのように機能するかを理解するためだけにそれを書きました。私が欲しいのは説明ではなく、回避策です。 using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; class Program { public class A { public int Id { get; set; } public ICollection<B> S { get; set; } = new List<B>() { new …

1
Asp.NetコアコントローラーからIAsyncEnumerable <T>およびNotFoundを返す
IAsyncEnumerable&lt;T&gt;and を返すが、NotFoundResultまだ非同期で処理されるコントローラーアクションの正しいシグネチャは何ですか? 私はこのシグネチャを使用しましたが、それがIAsyncEnumerable&lt;T&gt;待てないためコンパイルできません: [HttpGet] public async Task&lt;IActionResult&gt; GetAll(Guid id) { try { return Ok(await repository.GetAll(id)); // GetAll() returns an IAsyncEnumerable } catch (NotFoundException e) { return NotFound(e.Message); } } これは正常にコンパイルされますが、その署名は非同期ではありません。だから私はそれがスレッドプールのスレッドをブロックするかどうか心配しています: [HttpGet] public IActionResult GetAll(Guid id) { try { return Ok(repository.GetAll(id)); // GetAll() returns an IAsyncEnumerable } catch (NotFoundException e) { …

3
未チェックのuintのC#オーバーフロー動作
私はこのコードをhttps://dotnetfiddle.net/でテストしています: using System; public class Program { const float scale = 64 * 1024; public static void Main() { Console.WriteLine(unchecked((uint)(ulong)(1.2 * scale * scale + 1.5 * scale))); Console.WriteLine(unchecked((uint)(ulong)(scale* scale + 7))); } } .NET 4.7.2でコンパイルすると、 859091763 7 しかし、Roslynまたは.NET Coreを実行すると、 859091763 0 なぜこれが起こるのですか?
10 c#  .net  overflow  roslyn  uint 

1
イスラム暦の日付からグレゴリオ暦の日付への正しい変換プログラムはありますか
私は日付変換を伴う多くのプロジェクトに取り組んでいます。たとえば、私は太陽暦とそれらをグレゴリオ暦に変換する方法、およびその逆の方法を研究しています。太陽暦(ペルシア暦)は、グレゴリオ暦の日付とほぼ同じですが、1年の日数は(うるうか否か)です。 しかし、私は最近、旧暦のプロジェクトに取り組みました。月暦を調べていると、月のシステムを太陽に変換する論理的な方法が1つもないことに気づきました(少なくとも私の知る限り)。 以下は、私が調査した参考リンクです。 イスラム暦の日付からグレゴリオ暦の日付に変換できません(c#) イスラム暦からグレゴリオ暦への日付の変換、およびその逆 イスラム暦日付DateTime.Parseを使用してグレゴリオ暦に イスラム暦の日付をグレゴリオ日付に変換する 上記のリンクをたどって、トレーニングとテストの人々が提示したアルゴリズムを調べたところ、絶対に正しいものはないことに気づきました。 それ"1441/02/30" [Safar 30th]はあなたが試してみたいすべての方法であるグレゴリオ暦の日付に変換するだけです。 次の画像は、前述の例に役立ちます。 私はここにいくつかのテストコードを入れて失敗しました: CultureInfo arSA = new CultureInfo("ar-SA"); arSA.DateTimeFormat.Calendar = new HijriCalendar(); var dateValue = DateTime.ParseExact("1441/02/30", "yyyy/MM/dd", arSA); return dateValue.ToString(); 上記のコードのエラー: 文字列で表されるDateTimeは、カレンダーSystem.Globalization.HijriCalendarではサポートされていません。 HijriCalendar hc = new HijriCalendar(); DateTime date = new DateTime(1441, 2, 30, hc); return date.ToString(); 上記のコードのエラー: 「2日目の日は1から29の間でなければなりません。」 string …
10 c#  hijri 

3
Blazorサーバー側で検証メッセージ(DataAnnotationsValidator)をローカライズする方法
VS 2019の最新バージョンでblazor 3.1を使用しています。 これまでのところ、ページラベル(タイトル、テーブルフィールドなど)をローカライズできます。 ではListEmployee.razorページ私は、テーブルの見出しなどをローカライズすることができていますし、上のAddEmplyeeValidation.razorページ私は、ローカライズのフォームラベルにできるようですが、私は、問題の検証メッセージをローカライズしています。 検証メッセージのEmployee.cs検証メッセージは、このファイルとResources/Dataフォルダで定義されてData.Employee.ar.resxおりData.Employee.ar.resx、次のように定義されています。 System.ComponentModel.DataAnnotationsを使用します。 名前空間BlazorSPA1.Data {public class Employee {[MaxLength(50)] public string Id {get; セットする; } [Required (ErrorMessage ="Name is RRRequired")] [StringLength(20, ErrorMessage = "Name is too long.")] public string Name { get; set; } [Required] [StringLength(20)] public string Department { get; set; } [MaxLength(100)] public string Designation …

5
C#8のnullにできない参照型は、実行時にnullにできますか?
nullでない変数がnullを持たないという保証は本当にないようです。nullにできないプロパティが1つあるクラスがあるとします。 public class Foo { public Foo(string test) { Test = test; } public string Test {get;set;} } これはnullにできなくなったように見えるかもしれません。ただし、このクラスをnull許容コンテキストを使用しない別のライブラリで参照する場合、そこにnullを送信することを妨げるものはありません。 それは正しいですか、またはおそらくこれを確実にするいくつかの実行時チェックがありますか?

1
同一の入力で34回呼び出した後、Vector2.Normalize()の結果が変化するのはなぜですか?
以下は、System.Numerics.Vector2.Normalize()ループ内で(呼び出しごとに同じ入力で)呼び出し、結果の正規化されたベクトルを出力する単純なC#.NET Core 3.1プログラムです。 using System; using System.Numerics; using System.Threading; namespace NormalizeTest { class Program { static void Main() { Vector2 v = new Vector2(9.856331f, -2.2437377f); for(int i = 0; ; i++) { Test(v, i); Thread.Sleep(100); } } static void Test(Vector2 v, int i) { v = Vector2.Normalize(v); Console.WriteLine($"{i:0000}: {v}"); } …
10 c#  .net  .net-core 

3
IAsyncEnumerableを返すメソッドの明確な命名規則はありますか?
C#5 が非同期プログラミングのasyncおよびawaitモデルを導入した後、C#コミュニティは、次のように、待機可能な型を返すメソッドに「非同期」サフィックスを追加する命名規則に到達しました。 interface Foo { Task BarAsync(); } 多くの静的コードアナライザー(Roslynベースと非Roslynベースの両方)は、非同期プログラミングに関するコードのにおいを検出するときに、この命名規則に依存するように作成されています。 C#8が非同期列挙型の概念を導入したので、それ自体は待機できませんが、と組み合わせて使用​​できます。await foreachメソッドに名前を付けるための2つのオプションが返されるようIAsyncEnumerableです。 interface Foo { // No "Async" suffix, indicating that the return value is not awaitable. IAsyncEnumerable&lt;T&gt; Bar&lt;T&gt;(); } または interface Foo { // With "Async" suffix, indicating that the overall logic is asynchronous. IAsyncEnumerable&lt;T&gt; BarAsync&lt;T&gt;(); } 上記のオプションに関して、C#5の命名規則が明確に標準化され、プログラマーの意見に基づく判断に委ねられていないなど、明確な命名規則のガイドライン(C#言語チーム、.NET Foundation、またはその他の機関による)はありましたか?
10 c#  c#-8.0 

8
C#で正規表現を使用して特定の単語の前の数字を取得するにはどうすればよいですか?
以下の正規表現を使用して、単語の前の数字を取得します。 例: 838123 someWord 8 someWord 12 someWord (\d+)\s*someWord ただし、Numberとwordの間に何かが発生する場合があります。以下のサンプル行を参照してください。 例: 43434 of someword 12何かsomeword 2323新しいsomeword 正規表現を使用してその単語の前の正確な数字を取得するにはどうすればよいですか? あなたの提案をお願いします。
10 c#  .net  regex 

1
NuGetパッケージをインストールするときに、これらの.dllの追加を回避できますか?
私は私のものと同様にこの提案された質問を読むことから始めましたが、解決策はありませんでした: MSTest.TestAdapterがなぜそのDLLをNuGetパッケージに追加するのですか? 問題の簡単な説明 NuGetパッケージを作成し、インストールするたびにNUnit、NUnit3TestAdapter .dllさんは、私がインストールプロジェクトに追加されます。この問題を解決する解決策を見つけたいです。 再現手順 私が説明している問題を再現する2つのgitリポジトリをプッシュしました。 ClientLibrary/ MainFramework(NuGetパッケージを生成したプロジェクト)-https ://github.com/harbourc/client-library-repro-nuget-issue TargetProject(パッケージがインストールされるプロジェクト)-https://github.com/harbourc/target-project-repro-nuget-issue 両方のリポジトリのクローンを作成し、NuGetパッケージを復元して、次のように問題を再現できます。 client-library-repro-nuget-issue / ClientLibrary /でClientLibrary.1.0.0.nupkgを見つけます target-project-repro-nuget-issueのパッケージマネージャーコンソールを開いて実行する Install-Package C:\Path\To\client-library-repro-nuget-issue\ClientLibrary\ClientLibrary.1.0.0.nupkg 注意NUnitとNUnit3TestAdapter .dllに追加されているのTargetProjectにもかかわらず- TargetProjectすでに持っているNUnitとNUnit3TestAdapterインストールされています。 より長い概要 と呼ばれる内部使用のために独自のNuGetパッケージを作成しました。ClientLibraryそれをと呼ばれる別のプロジェクトにインストールしようとしていTargetProjectます。これは構造の簡単な内訳です​​: FullSolution.sln MainFramework.csproj ClientLibrary.csproj-&gt; .nupkgこれから生成 別のプロジェクト: TargetProject.sln TargetProject.csproj-&gt; .nupkgこれにインストール ClientLibraryへの参照がありMainFramework、からの多くのメソッドを使用しMainFrameworkます。 にインストールClientLibrary.1.0.0.nupkgするTargetProjectと、次.dllのものがに追加されTargetProjectます。 nunit.engine.api.dll nunit.engine.dll NUnit3.TestAdapter.dll NUnit3.TestAdapter.pdb これらを削除すると.dll、すべてが正常に機能します。TargetProjectすでにこれらのパッケージがインストールされているます。それらは必要ではなく、インストール時にそれらを削除しなければならないのは面倒です。 ここに私がClientLibraryNuGetパッケージを追加する方法がありますTargetProject: ビルドClientLibraryしてMainFrameworkプロジェクトを作成して.dllを生成する ディレクトリをClientLibraryフォルダーに変更して実行しますnuget spec .nuspec ファイルが生成されます: &lt;?xml version="1.0"?&gt; &lt;package &gt; &lt;metadata&gt; …
10 c#  .net  dll  nuget 

1
mscorlibの `System.Boolean`は構造体のレイアウトサイクルをどのように回避しますか?
System.BooleanReference Sourceウェブサイトののソースコードは、のインスタンスにはstruct Boolean単一のboolフィールドのみが含まれると述べていますprivate bool m_value:: https://referencesource.microsoft.com/#mscorlib/system/boolean.cs,f1b135ff6c380b37 namespace System { using System; using System.Globalization; using System.Diagnostics.Contracts; [Serializable] [System.Runtime.InteropServices.ComVisible(true)] public struct Boolean : IComparable, IConvertible #if GENERICS_WORK , IComparable&lt;Boolean&gt;, IEquatable&lt;Boolean&gt; #endif { private bool m_value; internal const int True = 1; internal const int False = 0; internal const String TrueLiteral = …
10 c# 

3
タスクで使用されているキャンセルトークンをキャンセルする正しい方法はありますか?
キャンセルトークンを作成するコードがあります public partial class CardsTabViewModel : BaseViewModel { public CancellationTokenSource cts; public async Task OnAppearing() { cts = new CancellationTokenSource(); // &lt;&lt; runs as part of OnAppearing() それを使用するコード: await GetCards(cts.Token); public async Task GetCards(CancellationToken ct) { while (!ct.IsCancellationRequested) { App.viewablePhrases = App.DB.GetViewablePhrases(Settings.Mode, Settings.Pts); await CheckAvailability(); } } 上記のコードが実行されている画面からユーザーが離れた場合、このキャンセルトークンを後でキャンセルするコード: public void …

5
c#-Microsoft Graph API-フォルダーが存在するかどうかを確認する
私はMicrosoft Graph APIを使用しており、次のようなフォルダーを作成しています。 var driveItem = new DriveItem { Name = Customer_Name.Text + Customer_LName.Text, Folder = new Folder { }, AdditionalData = new Dictionary&lt;string, object&gt;() { {"@microsoft.graph.conflictBehavior","rename"} } }; var newFolder = await App.GraphClient .Me .Drive .Items["id-of-folder-I-am-putting-this-into"] .Children .Request() .AddAsync(driveItem); 私の質問は、このフォルダーが存在するかどうか、およびフォルダーのIDを取得するかどうかを確認するにはどうすればよいですか?

2
Entity Frameworkのユーザー定義テーブルが不正なクエリを生成する
私は現在、Entity Framework 6とおそらくADO.NETのバグを経験していると思います。期限があるので、このバグが修正されるのを待つことができるかどうかわかりません。うまくいけば、誰かが私にクリーンな作業を手伝ってくれると思います。 問題は、クエリで値1と5が0.01と0.05になるはずの場所で使用されることです。しかし、奇妙なことに0.1は機能しているようです 生成されたクエリは現在次のとおりです(SQL Server Profilerから取得) declare @p3 dbo.someUDT insert into @p3 values(NULL,5) insert into @p3 values(5,0.10) insert into @p3 values(NULL,1) insert into @p3 values(1,2) exec sp_executesql N'Select * from @AName',N'@AName [dbo].[someUDT] READONLY',@AName=@p3 正しいコードは次のとおりです。 declare @p3 dbo.someUDT insert into @p3 values(NULL,0.05) insert into @p3 values(0.05,0.10) insert into @p3 values(NULL,0.01) …

1
ToLookupの前に追加のToArrayを配置すると、なぜ高速になるのですか?
.csvファイルを解析してルックアップする短いメソッドがあります。 ILookup&lt;string, DgvItems&gt; ParseCsv( string fileName ) { var file = File.ReadAllLines( fileName ); return file.Skip( 1 ).Select( line =&gt; new DgvItems( line ) ).ToLookup( item =&gt; item.StocksID ); } そして、DgvItemsの定義: public class DgvItems { public string DealDate { get; } public string StocksID { get; } public string StockName …
10 c#  linq 

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