dotnet 核心的 String.Copy 替代方案

Posted

技术标签:

【中文标题】dotnet 核心的 String.Copy 替代方案【英文标题】:String.Copy alternative for dotnet core 【发布时间】:2016-11-11 14:26:06 【问题描述】:

我正在尝试让以下代码在 ubuntu linux 上运行的 dotnet 核心中工作 - 但在此行上出现“字符串不包含复制定义”编译错误 - 显然 String.Copy 不支持dotnet-core:

         Attendance = String.Copy(markers) ;

在 dotnet Core 中进行浅字符串复制的最佳方法是什么?我应该使用 string.CopyTo 吗?

谢谢

//I want to add an initial marker to each record
//based on the number of dates specified
//I want the lowest overhead when creating a string for each record

string markers = string.Join("", dates.Select(p => 'U').ToArray());
return logs.Aggregate( new List<MonthlyAttendanceReportRow>(), (rows, log) => 
     var match = rows.FirstOrDefault(p => p.EmployeeNo == log.EmployeeNo);
     if (match == null) 
         match = new MonthlyAttendanceReportRow() 
             EmployeeNo = log.EmployeeNo,
             Name = log.FirstName + " " + log.LastName,
             Attendance = String.Copy(markers) ;
         rows.Add(match);
      else 
     
     return rows;
 );

【问题讨论】:

How to do String.Copy in .net core?的可能重复 类似的问题是的,但是这个问题是在另一个问题之前 2 个月被问到的?不知道如何处理。 是的,看起来这个问题得到的关注较少,我的错:( 【参考方案1】:

要完成 Rogerson 的回答,您可以使用扩展方法来执行您正在寻找的确切事情。

using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;

namespace CSharp_Shell

public static class ext
    public static string Copy(this string val)
        return new String(val.ToArray());
    


    public static class Program 
    
        public static void Main() 
        
            string b = "bbb";
            var a = b.Copy();
            Console.WriteLine("Values are equal: 0\n\nReferences are equal: 1.", Object.Equals(a,b), Object.ReferenceEquals(a,b));
        
    

【讨论】:

【参考方案2】:

试试这个:

string b = "bbb";
var a = new String(b.ToArray());
Console.WriteLine("Values are equal: 0\n\nReferences are equal: 1.", Object.Equals(a,b), Object.ReferenceEquals(a,b));

你可以看到它在this fiddle上运行。

【讨论】:

以上是关于dotnet 核心的 String.Copy 替代方案的主要内容,如果未能解决你的问题,请参考以下文章

从 ASP.NET MVC 5 移植到 dotnet core 2:可能替代 System.Web.Mvc.HttpStatusCodeResult [重复]

Rider 说无法更新路径“/usr/share/dotnet/dotnet”中的 dotnet 核心

无法启动 dotnet 核心进程。添加工具失败

WCF 客户端日志记录 dotnet 核心

dotnet 核心包版本控制

dotnet 核心中的 Dbcontext 对象瞬态