小编Jer*_*vel的帖子

目标阵列不够长?

我有一个类有以下方法:

public List<Bike> bikesCopy 
{
     get 
     { 
       List<Bike> bs;
       lock (_bikes) bs = new List<Bike>(_bikes);
       return bs;
     }
}
Run Code Online (Sandbox Code Playgroud)

这是另一个列表的副本, private List<Bike> _bikes;

现在奇怪的是,我收到以下错误:

目标数组不够长.检查destIndex和length,以及数组的下限.

这里有什么问题?

c# locking list

47
推荐指数
3
解决办法
5万
查看次数

未初始化的原始实例变量是否使用内存?

在Java中,在没有初始化的情况下声明类级实例变量会花费内存吗?
例如:int i;如果我没有初始化它,是否使用任何内存i = 5;

细节:

我有一个巨大的超级类,许多不同的(没有足够的不同,有自己的超类)子类扩展.一些子类不使用超类声明的每个单元.我可以简单地将这些原语保留为未初始化,并仅在必要的子类中初始化它们以节省内存吗?

java primitive memory-management initialization

42
推荐指数
4
解决办法
5630
查看次数

关闭后,我应该手动处理插座吗?

关闭我还应该打电话Dispose()给我的插座吗?

例如:

mySocket.Shutdown(SocketShutdown.Both);
mySocket.Close();
mySocket.Dispose(); // Redundant?
Run Code Online (Sandbox Code Playgroud)

我想知道因为MSDN文档说明如下:

关闭Socket连接并释放所有相关资源.

c# sockets dispose

32
推荐指数
3
解决办法
2万
查看次数

从十六进制转换为字符串

我需要检查一个string位于数据包内的数据包byte.如果我使用BitConverter.ToString(),我得到字节string与破折号(fe:00-50-25-40-A5-FF).
我尝试了一些快速谷歌搜索后找到的大多数函数,但是大多数函数都有输入参数类型string,如果我用string带破折号调用它们,它会抛出异常.

我需要一个函数将十六进制(as string或as byte)转换为string表示十六进制值(fe:0x31 = 1)的函数.如果输入参数是string,则该功能应识别破折号(例如"47-61-74-65-77-61-79-53-65-72-76-65-72"),因为BitConverter无法正确转换.

c# string hex bitconverter

30
推荐指数
3
解决办法
14万
查看次数

我可以对Number基类进行算术运算吗?

我试图在Java中创建一个将对数字执行操作的泛型类.在以下示例中,添加如下:

public class Example <T extends Number> {

    public T add(T a, T b){
        return a + b;
    }

}
Run Code Online (Sandbox Code Playgroud)

请原谅我的天真,因为我对Java Generics相对较新.此代码无法编译错误:

对于参数类型T,T,运算符+未定义

我认为通过添加"extends Number",代码将被编译.是否可以执行此Java或是否必须为每种Number类型创建重写方法?

java

30
推荐指数
3
解决办法
2万
查看次数

为什么我不能从表达式身体成员中抛出异常?

使用表达式成员允许您将方法或属性的主体定义为没有return关键字的单个表达式(如果它返回了某些内容).

例如,它变成了这些

int Method1()
{
    return 5;
}

void Method2()
{
    Console.WriteLine();
}
Run Code Online (Sandbox Code Playgroud)

进入这些

int Method1() => 5;

void Method2() => Console.WriteLine();
Run Code Online (Sandbox Code Playgroud)

当您从正文中抛出异常时,会产生差异:

void Method3()
{
    throw new Exception();
}
Run Code Online (Sandbox Code Playgroud)

但是,以下内容将无法编译:

void Method3() => throw new Exception();
Run Code Online (Sandbox Code Playgroud)

以下消息:

Warning The member 'Program.Exception()' does not hide an inherited member. The new keyword is not required.  
Error   'Program.Exception()' must declare a body because it is not marked abstract, extern, or partial  
Error   ; expected  
Error   Invalid token 'throw' in class, struct, or …
Run Code Online (Sandbox Code Playgroud)

c# roslyn c#-6.0

28
推荐指数
2
解决办法
4733
查看次数

使用中间变量而不是array.length会使你的for循环变得更快吗?

Android文档中"性能提示"部分有一个非常大胆的主张:

one()是比较快的.它将所有内容都拉到局部变量中,避免了查找.只有阵列长度才能提供性能优势.

它引用此代码段:

int len = localArray.length;

for (int i = 0; i < len; ++i) {
    sum += localArray[i].mSplat;
}
Run Code Online (Sandbox Code Playgroud)

这让我感到很惊讶,因为localArray.length只是访问一个整数,如果你使用一个中间变量,你必须再次执行相同的步骤.我们真的在说一个只需要x代替的中间变量y.x更快吗?

我看了一下这个问题是关于同样的想法但是使用了一个arraylist及其后续的.size()方法.这里的共识似乎是没有区别,因为方法调用可能只是内联到整数访问(这正是我们在这里的场景).

所以我接受了字节码,看看是否可以告诉我任何事情.

给出以下源代码:

public void MethodOne() {
    int[] arr = new int[5];
    for (int i = 0; i < arr.length; i++) { }
}

public void MethodTwo() {
    int[] arr = new int[5];
    int len = arr.length;
    for (int i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

java performance benchmarking for-loop bytecode

27
推荐指数
1
解决办法
973
查看次数

前缀(++ x)和后缀(x ++)操作如何工作?

有人能告诉我前缀/后缀运算符是如何工作的吗?我一直在网上看很多但没找到任何东西.

从我可以告诉prefex第一个增量,然后执行操作,然后分配.
Postfix将首先执行操作,然后分配然后递增.

但是我的代码遇到了一些麻烦:

int x, y;
x = 1;
y = x + x++; // (After operation y = 2)(x=2)
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时:

y = x++ + x; // (After operation y = 3)(x=2)
Run Code Online (Sandbox Code Playgroud)

我不确定为什么这些操作会有所不同.我有两个问题:

  • 你能解释一下这个区别吗?

  • 这如何适用于其他运营商Prefix?

c c# c++ sequence-points

26
推荐指数
4
解决办法
2万
查看次数

从父对象创建子对象实例的最佳方法

我正在从父对象创建一个子对象.所以场景是我有一个对象和一个子对象,它为我想要搜索的场景添加了一个距离属性.我选择使用继承,因为我的UI与搜索对象或对象列表等效地工作,而不是位置搜索的结果.所以在这种情况下,继承似乎是一个明智的选择.

目前我需要MyObjectSearch从一个实例生成一个新对象MyObject.目前我通过逐个设置属性手动在构造函数中执行此操作.我可以使用反射,但这会很慢.有没有更好的方法来实现这种对象增强?

希望下面的代码说明了这个场景.

public class MyObject {

    // Some properties and a location.
}

public class MyObjectSearch : MyObject {

    public double Distance { get; set; }

    public MyObjectSearch(MyObject obj) {
         base.Prop1 = obj.Prop1;
         base.Prop2 = obj.Prop2;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的搜索功能:

public List<MyObjectSearch> DoSearch(Location loc) { 
  var myObjectSearchList = new List<MyObjectSearch>();       

   foreach (var object in myObjectList) {
       var distance = getDistance();
       var myObjectSearch = new MyObjectSearch(object);
       myObjectSearch.Distance = distance;
       myObjectSearchList.add(myObjectSearch);
   } 
   return myObjectSearchList;
Run Code Online (Sandbox Code Playgroud)

}

.net c# inheritance objectinstantiation

24
推荐指数
4
解决办法
3万
查看次数

当基本身份验证使用无效凭据时,Windows.Web.Http.HttpClient#GetAsync会引发不完整的异常

我正在使用Windows运行时组件进行API调用.直到今天早些时候,我使用了HttpClient相关的模型,System.Net但转而Windows.Web使用WinRT流.

除了将using报表,交换HttpContentIHttpContent并使用WindowsRuntimeExtensions改变我IInputStreamStream为JSON.NET,我没有做什么特别的事情.然而,在我的16次测试中突然有3次失败,而之前一切都运转了

所有3个(集成)测试都验证我在使用无效凭据登录时收到错误响应.还有其他测试包括登录(但使用有效的凭据),它们工作得很好.给定的错误消息属于类型AggregateException并具有消息

System.AggregateException:发生一个或多个错误.---> System.Exception:找不到元素.

无法显示对话框,因为尚未设置父窗口句柄.

该异常包含HRESULT值.outerexception具有-2146233088与对应0x80131500的innerexception -2147023728对应的值0x80070490.这些都不是MSDN页面已知错误代码.

经过调查:

堆栈跟踪:

Result StackTrace:  
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at xx.Models.Requests.GetRequest.<ExecuteRequestAsync>d__0.MoveNext() in c:\Users\jeroen\Github\Windows-app\xx\xx\Models\Requests\Request.cs:line 17

--- End of stack trace from previous location where exception was thrown ---

   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) …
Run Code Online (Sandbox Code Playgroud)

.net c# async-await windows-runtime dotnet-httpclient

21
推荐指数
1
解决办法
1万
查看次数