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

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

1
FirstOrDefaultから公開されていないnull可能な参照型情報
C#8.0 の新しいnull許容参照型機能をテストしたかったのです。 .NET Core 3.0を対象とする新しいプロジェクトを開始し、.csprojファイルでnull許容の参照型を有効にして、コーディングを開始しました。私はaを取り、その配列に等しいstring[]を返す単純なリストを作成しました。ここで、配列に実際に存在するかどうかは定かでないので、を使用します。これは、一致が見つからない場合にデフォルトになるはずです。stringabcabcFirstOrDefault()null using System; using System.Linq; public string FindArgument(string[] args) { var arg = args.FirstOrDefault(x => x == "abc"); return arg; } 私のメソッドはを返しますstring。これはnullにできないタイプになっているはずです。nullFirstOrDefault()が返される可能性があるのでnull、上記のメソッドはnull の可能性があるarg変数を返すときに警告を生成することを期待します。ありません。 FirstOrDefault()Visual Studioでのシグネチャを見ると、その理由は明らかです。メソッドが返すのはstring、string?私が期待するnullに対応する同等のものではありません。 以下のメソッド本体を使用すると、期待した警告が表示されます。 var arg = args.Contains("abc") ? "abc" : null; return arg; (この例のSystem.Linq)システムライブラリは、.NET Core 3.0を対象とする場合、null可能性情報を実際に公開しませんか?

5
Azureテーブルストレージでパーティションキーを使用してクエリを高速化する方法
このクエリの速度を上げるにはどうすればよいですか? 次のクエリを実行するスパン内に約100のコンシューマーがあり1-2 minutesます。これらの各実行は、消費関数の1つの実行を表します。 TableQuery<T> treanslationsQuery = new TableQuery<T>() .Where( TableQuery.CombineFilters( TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, sourceDestinationPartitionKey) , TableOperators.Or, TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, anySourceDestinationPartitionKey) ) ); このクエリにより、約5000件の結果が得られます。 完全なコード: public static async Task<IEnumerable<T>> ExecuteQueryAsync<T>(this CloudTable table, TableQuery<T> query) where T : ITableEntity, new() { var items = new List<T>(); TableContinuationToken token = null; do { TableQuerySegment<T> seg …


6
FromSqlRawを介してEF Core 3.0でストアドプロシージャを呼び出す方法
最近、EF Core 2.2からEF Core 3.0に移行しました。 残念ながら、エンティティを返すストアドプロシージャを呼び出す方法が見つかりませんでした。 EF Core 2.0では、次のことが可能でした。 var spParams = new object[] { "bla", "xx" }; var createdPath = ModelContext.Paths.FromSql("AddNodeWithPathProc @p0, @p1", spParams).Single(); EF Core 3.0では、メソッドFromSQLはに置き換えられていFromSqlRawます。ただし、ストアドプロシージャを正常に呼び出してから、値を処理できませんでした。これは、ストアード・プロシージャーがデータベースにデータを挿入するときに役立ちます。 EF Core 3.0では、次のコードを使用します。 var createdPath = ModelContext.Paths.FromSqlRaw("AddNodeWithPathProc @p0, @p1", spParams).Single(); ただし、生成されたSQLは無効であり、次のように見えるため、例外がスローされます。 exec sp_executesql N'SELECT TOP(2) [p].[PathId], [p].[Level], [p].[NodeId], [p].[NodePath], [p].[NodePathString] FROM ( …

3
ローカル開発を中断せずにEF CoreでAzure SQL Serverエディションを指定する
Entity Framework Core は、Azure SQLサーバーのエディションを変更するためのメソッドHasServiceTierおよびHasPerformanceLevelを導入しました。次のようにOnModelCreatingで使用できます。 protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.HasServiceTier("Basic"); modelBuilder.HasPerformanceLevel("Basic"); } Add-Migration Add-Migrationを使用すると、次のような移行が行われます。 public partial class ChangedDatabaseServiceTierToBasic : Migration { protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AlterDatabase() .Annotation("SqlServer:EditionOptions", "EDITION = 'Basic', SERVICE_OBJECTIVE = 'Basic'"); } protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.AlterDatabase() .OldAnnotation("SqlServer:EditionOptions", "EDITION = 'Basic', …

7
C#でイベントが発生するまでコードフローをブロックする方法
ここにGridとがありButtonます。ユーザーがボタンをクリックすると、Utilityクラスのメソッドが実行され、アプリケーションがグリッドをクリックするように強制します。コードフローはここで停止し、ユーザーがをクリックするまで続行しないでくださいGrid。 私はここまでに同様の質問をしました: ユーザーがC#WPFをクリックするまで待ちます その質問では、動作するasync / awaitを使用して回答を得ましたが、これをAPIの一部として使用するので、コンシューマーは自分のメソッドを非同期は必要ありません。 Utility.PickPoint(Grid grid)この目標を達成するためのメソッドをどのように記述しますか? 私はこれを助けるかもしれないが、正直に言うとここに適用することを完全には理解していませんでした: イベントが完了するまでブロックする コンソールアプリケーションのConsole.ReadKey()メソッドのようなものと考えてください。このメソッドを呼び出すと、値を入力するまでコードフローが停止します。デバッガは、何かを入力するまで続行されません。PickPoint()メソッドの正確な動作が必要です。コードフローは、ユーザーがグリッドをクリックするまで停止します。 <Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApp1" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="3*"/> <RowDefinition Height="1*"/> </Grid.RowDefinitions> <Grid x:Name="View" Background="Green"/> <Button Grid.Row="1" Content="Pick" Click="ButtonBase_OnClick"/> </Grid> </Window> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } …

1
Kubernetesで実行されているASP.NET Core WebアプリでVisual Studioデバッガーを使用しますか?
私たちのチームは、内部のKubernetesクラスターにASP.NETアプリケーションのデプロイされたインスタンスに対してVisual Studioデバッガーを実行できるようにしたいと考えています。パズルを完成させる方法を理解する必要がありますが、Visual Studio 2019にはあまり詳しくありません。 Dockerイメージは公式の.NET Coreイメージでコンパイルされ、/ vsdbgに最新バージョン(--attachをサポートしていない)が入力されています。 Visual Studioは私のDockerデスクトップで動作します。 Kubectlが正しく構成されている。テストには、Dockerデスクトップに含まれているkubernetesクラスターまたは内部のkubernetesクラスターを使用できます。 Azureは現在オプションではありません。ドキュメントから、これはマイクロソフトが私に好むことだと理解しています。 これを実行できるようにVisual Studioを構成するにはどうすればよいですか?

3
検出は、Windowsサービスが削除されたときです
Windowsサービスが削除されたことを検出する方法はありますか?イベントログを確認しましたが、追加されただけの削除済みアクションは取得されません。 監査ログを使用する方法があると思いますが、これを行う方法がわかりません。 どんな助けでも大歓迎です。 ありがとう

4
C#ジェネリックメソッドの選択
さまざまな次元の幾何学的エンティティを処理できる汎用アルゴリズムをC#で記述しようとしています。 次の不自然な例ではPoint2、とを使用していますがPoint3、どちらも単純なIPointインターフェースを実装しています。 これで、関数GenericAlgorithmを呼び出す関数ができましたGetDim。タイプに基づいて、この関数には複数の定義があります。を実装するものに対して定義されているフォールバック関数もありますIPoint。 最初は、次のプログラムの出力が2、3であると予想していましたが、0、0です。 interface IPoint { public int NumDims { get; } } public struct Point2 : IPoint { public int NumDims => 2; } public struct Point3 : IPoint { public int NumDims => 3; } class Program { static int GetDim<T>(T point) where T: IPoint => 0; …
9 c#  generics 

3
すべてをスタートアップクラスに追加する以外に、ASP.NET Core 3.1で依存関係を登録するための堅牢な方法はありますか?
ASP.NET Core 3.1プロジェクトがあります。通常、クラスのConfigureServices()メソッドを使用して依存関係を登録しますStartup.cs。 しかし、私は多くの依存関係を登録しなければならないことに気づき、ConfigureServices()見た目は巨大です!静的メソッドの拡張メソッドを作成してConfigureService() `クラスから呼び出すことができることはわかっていますが、もっと良い方法があるかどうか疑問に思っています。 このように1つずつ定義する必要なしにIoCコンテナに依存関係を登録する方法がある場合 services.AddScoped<Interface, Class>(); .... 200 lines later services.AddScoped<ISettings, Settings>()

4
「return」の戻り型は何ですかC#[終了]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 3か月前に閉鎖。 コンソールアプリケーションを作成していて、ユーザーが情報を入力して新しいPersonオブジェクトを作成できる「メニュー」を持っています。以下はメソッド内です。 Write("Please enter the first name: ", false); string fName = Console.ReadLine().ToUpper(); Write("Please enter the middle initial: ", false); string mInitial = Console.ReadLine().ToUpper(); Write("Please enter the last name: ", false); string lName = Console.ReadLine().ToUpper(); そのようです。新しい人を作りたくないと決断した場合、ユーザーがいつでもメソッドを終了できるようにしたい。「CheckExit」という新しいメソッドを作成します。「EXIT」と入力すると、「CreatePerson」メソッドが残ります。したがって、「CheckExit」でリターンを返したい それ以外の場合は、すべての入力の後に「if」ステートメントを追加する必要があり、それが煩雑になります。 これは可能ですか?返品には返品タイプがありますか?これを行う適切な方法は何でしょうか?

8
クエリの実行が非常に遅いですが、さらに改善する方法はありますか?
次のクエリがありSUMますが、関数呼び出しが多いため、クエリの実行が遅すぎます。データベースに多数のレコードがあり、それぞれについて、現在の年と昨年(過去30日間、過去90日間、過去365日間)のレポートを取得したいと思います。 SELECT b.id as [ID] ,d.[Title] as [Title] ,e.Class as [Class] ,Sum(CASE WHEN a.DateCol >= DATEADD(MONTH,-1,GETDATE()) THEN a.col1 ELSE 0 END) as [Current - Last 30 Days Col1] ,Sum(CASE WHEN a.DateCol >= DATEADD(MONTH,-1,GETDATE()) THEN a.col2 ELSE 0 END) as [Current - Last 30 Days Col2] ,Sum(CASE WHEN a.DateCol >= DATEADD(QUARTER,-1,GETDATE()) …

4
乗算C#を使用せずに文字列を整数に変換する
乗算を使用せずに文字列を整数に変換する方法はありますか?int.Parse()の実装も乗算を使用します。文字列をintに手動で変換できる他の同様の質問がありますが、これには、その基数10で数値を乗算する必要があります。これは、インタビューの1つで受けたインタビューの質問であり、これに関する答えを見つけることができません。
9 c#  string  int 

1
「System.IO.StreamWriter」から「CsvHelper.ISerializer」に変換できないのはなぜですか?
人のコンテンツをCSVファイルに書き込んでからエクスポートしようとすると、ビルドエラーが発生して失敗します。エラーは: cannot convert from 'System.IO.StreamWriter' to 'CsvHelper.ISerializer' これが何度もこの方法で実行したことが確実でない限り、なぜこれが起こっているのかはわかりません。 private void ExportAsCSV() { using (var memoryStream = new MemoryStream()) { using (var writer = new StreamWriter(memoryStream)) { using (var csv = new CsvHelper.CsvWriter(writer)) { csv.WriteRecords(people); } var arr = memoryStream.ToArray(); js.SaveAs("people.csv",arr); } } }

1
具体的な実装の代わりにデフォルトのメソッドを呼び出すにはどうすればよいですか
C#8で既定のインターフェイスメソッドの動作が変更されるのはなぜですか?過去のコードは次のとおりです(デフォルトのインターフェイスメソッドがデモでなかった場合)。 interface IDefaultInterfaceMethod { // By default, this method will be virtual, and the virtual keyword can be here used! virtual void DefaultMethod() { Console.WriteLine("I am a default method in the interface!"); } } interface IOverrideDefaultInterfaceMethod : IDefaultInterfaceMethod { void IDefaultInterfaceMethod.DefaultMethod() { Console.WriteLine("I am an overridden default method!"); } } …

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