Questions tagged «c#»

C#(发音为“ See Sharp”)是由Microsoft开发的一种高级,静态类型的多范例编程语言。C#代码通常针对Microsoft的.NET系列工具和运行时,其中包括.NET Framework,.NET Core和Xamarin。使用此标记可解决有关用C#或C#正式规范编写的代码的问题。

4
不使用乘法C#将字符串转换为整数
有没有一种方法可以将字符串转换为整数而不使用乘法。int.Parse()的实现也使用乘法。我还有其他类似的问题,您可以在其中手动将字符串转换为int,但这还需要将数字乘以10为底。这是我在一次采访中遇到的一个采访问题,我似乎找不到任何答案。
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!"); } } …

2
在C#中委派异步行为的模式
我正在尝试设计一个类,以公开添加异步处理问题的能力。在同步编程中,这可能看起来像 public class ProcessingArgs : EventArgs { public int Result { get; set; } } public class Processor { public event EventHandler<ProcessingArgs> Processing { get; } public int Process() { var args = new ProcessingArgs(); Processing?.Invoke(args); return args.Result; } } var processor = new Processor(); processor.Processing += args => args.Result …

2
当似乎无法实现空引用时,为什么会收到可能的空引用空引用警告?
阅读了有关HNQ的问题之后,我继续阅读了有关C#8中的Nullable引用类型的信息,并进行了一些实验。 我非常清楚,有人说“我发现了编译器错误!”,十分之九,甚至更多。这实际上是设计使然,并对自己产生误解。而且,因为我直到今天才开始研究此功能,所以显然我对它没有很好的了解。这样处理后,让我们看下面的代码: #nullable enable class Program { static void Main() { var s = ""; var b = s == null; // If you comment this line out, the warning on the line below disappears var i = s.Length; // warning CS8602: Dereference of a possibly null reference } } …

2
配置服务时如何在具有依赖关系注入的Azure Function V3中注入或使用IConfiguration
通常,在.NET Core项目中,我会创建一个“ boostrap”类来配置我的服务以及DI注册命令。这通常是一种扩展方法,IServiceCollection可以在其中调用类似的方法,.AddCosmosDbService并且在包含该方法的静态类中,所有必需的东西都是“自包含的”。但是关键是该方法IConfiguration从Startup类中。 我过去曾在Azure Functions中使用过DI,但尚未遇到此特定要求。 我正在使用IConfiguration绑定到属性与我两个都匹配的具体类local.settings.json当在Azure中部署功能时,以及开发/生产应用程序设置。 CosmosDbClientSettings.cs /// <summary> /// Holds configuration settings from local.settings.json or application configuration /// </summary> public class CosmosDbClientSettings { public string CosmosDbDatabaseName { get; set; } public string CosmosDbCollectionName { get; set; } public string CosmosDbAccount { get; set; } public string CosmosDbKey { get; …

3
将同一实体映射到不同的表
一点领域知识 我正在写一个POS(销售点)软件,该软件可以付款或退款。付款或退款时,需要指定使用哪种汇款方式:现金,EFT(〜=信用卡),会员卡,代金券等。 这些汇款方式是一组有限的已知值(一种枚举)。 棘手的是,我需要能够在POS终端上存储这些方式的自定义子集,以用于付款和退款(两组可能不同)。 例如: 可用付款方式:现金,电子转帐,会员卡,优惠券 可用退款方式:现金,代金券 实施现状 我选择实施汇款的概念意味如下: public abstract class MoneyTransferMean : AggregateRoot { public static readonly MoneyTransferMean Cash = new CashMoneyTransferMean(); public static readonly MoneyTransferMean EFT = new EFTMoneyTransferMean(); // and so on... //abstract method public class CashMoneyTransferMean : MoneyTransferMean { //impl of abstract method } public …

4
当我们在子类中实现抽象方法时,为什么需要在抽象方法之前使用override关键字?
当我们创建一个从抽象类继承的类并且实现继承的抽象类时,为什么必须使用override关键字? public abstract class Person { public Person() { } protected virtual void Greet() { // code } protected abstract void SayHello(); } public class Employee : Person { protected override void SayHello() // Why is override keyword necessary here? { throw new NotImplementedException(); } protected override void Greet() { …
9 c# 


2
动态连接字符串数据库C#
我总是使用这行代码进行连接: string ConnectString = "datasource = mysource; username = myusername; password = mypassword; database = mydatabasename"; 我这次想做的是,而不是每次在脚本中直接写入服务器数据时,我都想填充一些文本框。所以我尝试做这样的事情 string ConnectString = "datasource = txtmysource.Text; username = txtmyusername.Text; password = txtmypassword.Text; database = txtmydatabasename.Text"; 其中txtmysource.Text / txtmyusername.Text / txtmypassword.Text / txtmydatabasename.Text是UI中文本框的名称。但是我找不到写方法来做到这一点。
9 c#  database 

3
将DTO类与ORM一起使用时,C#8中的可空引用类型
我在具有数据传输对象(DTO)类的项目中激活了此功能,如下所示: public class Connection { public string ServiceUrl { get; set; } public string? UserName { get; set; } public string? Password { get; set; } //... others } 但是我得到了错误: CS8618:不可空的属性'ServiceUrl'未初始化。考虑将属性声明为可为空。 这是DTO类,因此我没有初始化属性。这是初始化类以确保属性为非null的代码的职责。 例如,呼叫者可以执行以下操作: var connection = new Connection { ServiceUrl=some_value, //... } 我的问题:启用C#8的可空性上下文后,如何处理DTO类中的此类错误?

1
澄清IAsyncEnumerable如何与ASP.NET Web API一起使用
在ASP.NET Web API项目中浏览IAsyncEnumerable时遇到了一个有趣的行为。考虑以下代码示例: // Code Sample 1 [HttpGet] public async IAsyncEnumerable<int> GetAsync() { for (int i = 0; i < 10; i++) { await Task.Delay(1000); yield return i; } } // Code Sample 2 [HttpGet] public async IAsyncEnumerable<string> GetAsync() { for (int i = 0; i < 10; i++) { …

3
如何声明一个未启动的任务,将等待另一个任务?
我已经完成了此单元测试,但我不明白为什么“ await Task.Delay()”不等待! [TestMethod] public async Task SimpleTest() { bool isOK = false; Task myTask = new Task(async () => { Console.WriteLine("Task.BeforeDelay"); await Task.Delay(1000); Console.WriteLine("Task.AfterDelay"); isOK = true; Console.WriteLine("Task.Ended"); }); Console.WriteLine("Main.BeforeStart"); myTask.Start(); Console.WriteLine("Main.AfterStart"); await myTask; Console.WriteLine("Main.AfterAwait"); Assert.IsTrue(isOK, "OK"); } 这是单元测试的输出: 这怎么可能是“等待”不等待,而主线程继续呢?

1
有什么可以解释这种情况下使用const的开销?
我的头撞在这里的墙上,所以我希望你们中的一些人可以教育我。我当时使用BenchmarkDotNet进行了一些性能基准测试,但遇到了一个奇怪的情况,在该情况下,声明成员似乎const会大大降低性能。 using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Running; using System; namespace PerfTest { [DisassemblyDiagnoser(printAsm: true, printSource: true)] public class Test { private int[] data; private int Threshold = 90; private const int ConstThreshold = 90; [GlobalSetup] public void GlobalSetup() { data = new int[1000]; var random = new Random(42); for (var i = …

3
进入控制器后进行后期绑定动态解析模型
我正在寻找一种在控制器中执行动作后解析模型的方法,描述问题的最简单方法是: public DTO[] Get(string filterName) { //How can I do this this.Resolve<MyCustomType>("MyParamName"); } 如果您正在寻找有关我为什么要这样做的更多信息,则可以继续阅读以获取完整信息。 TL; DR 我正在寻找一种解决模型请求的方法,给定一个始终从查询字符串中解析的参数名称。如何从启动动态注册过滤器。我有一个要处理注册过滤器的类。 在启动类中,我希望能够向我的restServices动态注册过滤器。我有一个用来传递给我的自定义ControllerFeatureProvider的选项,大致如下所示: public class DynamicControllerOptions<TEntity, TDTO> { Dictionary<string, Func<HttpContext, Expression<Func<TEntity, bool>>>> _funcNameToEndpointResolverMap = new Dictionary<string, Func<HttpContext, Expression<Func<TEntity, bool>>>>(); Dictionary<string, List<ParameterOptions>> _filterParamsMap = new Dictionary<string, List<ParameterOptions>>(); public void AddFilter(string filterName, Expression<Func<TEntity, bool>> filter) { this._funcNameToEndpointResolverMap.Add(filterName, …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.