小编WDU*_*DUK的帖子

将Hashtable添加到另一个Hashtable的末尾

我有一个接受hashTable的方法,我使用concat将它添加到另一个hashTable的末尾,但是我收到此错误:

System.Linq.Enumerable.Concat<TSource>(this System.Collections.Generic.IEnumerable<TSource>, System.Collections.Generic.IEnumerable<TSource>)'无法从用法中推断出方法的类型参数.

我不完全明白这意味着什么或我错了什么.我的方法看起来像这样:

public void resetCameras(Hashtable hashTable)
{
    Hashtable  ht = new Hashtable();

    ht.Add("time", 2.0f);
    ht.Add("easeType","easeInOutQuad");
    ht.Add("onupdate","UpdateSize");
    ht.Add("from",size);
    ht.Add("to",5.0f);

    if(hashTable != null) {
        ht = ht.Concat(hashTable);
    }

    iTween.ValueTo(gameObject,ht);
}
Run Code Online (Sandbox Code Playgroud)

希望你能帮助解释我的错误,对C#来说还是新手.

c#

6
推荐指数
1
解决办法
1410
查看次数

基于输入数据的自定义返回类型

我有一个方法,它接受一个接口类型并评估类型是什么,并从中我需要返回一个与之相关的类型.但我不确定如何使类型返回灵活.我试过这样的事情:

public static T GridPosition <T>(IReSizeableGrid gridData) {
  if (gridData is Hex) {
    var hexGrid = (HexGrid) gridData;
    return HexLibrary.WorldToHex(WorldPoint(Input.mousePosition, GroundPlane), hexGrid);
  }
  if (gridData is QuadGrid) {
    var quadGrid = (QuadGrid) gridData;
    return Grid.Get(WorldPoint(Input.mousePosition, GroundPlane), quadGrid);
  }
  throw new Exception("Wrong type passed to GridPosition: " + gridData.GetType());
}
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

无法隐式转换类型 Hex to T

我在这里使用正确的线路T吗?试图了解如何正确使用它.

.net c# generics

6
推荐指数
1
解决办法
117
查看次数

如何防止分配到支持字段?

我有以下属性和支持字段:

    private Vector3 _positionB;
    public Vector3 PositionB
    {
        get
        {
            if (_nodeB == null) return _positionB;
            else return _nodeB.Position;
        }
        set
        {
            _positionB = value;
            UpdateMesh();
        }
    }
Run Code Online (Sandbox Code Playgroud)

问题是,我有时会继续将值分配给类中的支持字段并跳过属性设置器(因此由于逻辑错误它不会自动更新)。

我更愿意通过属性强制分配,以便设置器随后运行相关函数。

有没有办法将其抽象出来以强制只分配给类中的属性?

c#

6
推荐指数
1
解决办法
1016
查看次数

粒子在团结中创造星场

我的脚本有问题.我试图在一个球体中随机创建一个星场,用于我的统一场景.但我对团结和c#是新手,所以我有点困惑.

星星有一个固定的位置,所以它们不应该移动,因此在Start()中创建; 然后在Update()中绘制;

问题是我收到此错误:

MissingComponentException: There is no 'ParticleSystem' attached to the "StarField" game object, but a script is trying to access it.
You probably need to add a ParticleSystem to the game object "StarField". Or your script needs to check if the component is attached before using it.
Stars.Update () (at Assets/Stars.cs:31)
Run Code Online (Sandbox Code Playgroud)

如果我手动添加一个粒子系统组件,它会导致一大堆闪烁的橙色斑点,这是我不想要的,所以我想在脚本中添加一些组件.

这是我附加到空游戏对象的脚本:

using UnityEngine;
using System.Collections;

public class Stars : MonoBehaviour {

    public int maxStars     = 1000;
    public int universeSize = 10;

    private ParticleSystem.Particle[] points;

    private void …
Run Code Online (Sandbox Code Playgroud)

c# particle-system unity5

5
推荐指数
1
解决办法
6196
查看次数

什么是使用net.Conn.Read持久TCP套接字的正确方法

我的Go服务器上有一个工作的TCP套接字设置.我接受传入连接,运行for循环并使用net.Conn.Read函数读取传入数据.

但这对我来说没有意义.如何知道已收到完整邮件以便继续返回邮件大小?

这是我目前的代码:

 func (tcpSocket *TCPServer) HandleConnection(conn net.Conn) {

    println("Handling connection! ", conn.RemoteAddr().String(), " connected!")    
    recieveBuffer := make([]byte, 50) // largest message we ever get is 50 bytes

    defer func() {          
        fmt.Println("Closing connection for: ", conn.RemoteAddr().String())
        conn.Close()
    }()

    for {
        // how does it know the end of a message vs the start of a new one?
        messageSize, err := conn.Read(recieveBuffer) 
        if err != nil {
            return
        }
        if messageSize > 0 { // update keep alive since we got …
Run Code Online (Sandbox Code Playgroud)

sockets tcp go

3
推荐指数
1
解决办法
2908
查看次数

无法将方法组转换为操作

我遇到了这个错误,但不知道如何修复它。

我试图将一个方法作为参数传递给另一个函数作为操作。我有一个定义了两种方法的接口:

//ISegment interface
void SetNodeA(in INode node);
void SetNodeB(in INode node);
Run Code Online (Sandbox Code Playgroud)

接下来我创建一个段,我想将此方法传递给另一个函数:

ISegment segment = GetSegment();
Execute(start, segment.SetNodeA);
Execute(end, segment.SetNodeB);
Run Code Online (Sandbox Code Playgroud)

我的执行函数如下所示:

void Execute(in EndPoint point, in Action<INode> fnc)
{
    Verify(segment);
    Verify(point.Node);
    fnc?.Invoke(point.Node); //set the node
}
Run Code Online (Sandbox Code Playgroud)

问题是我收到此错误:

参数 2:无法从“方法组”转换为“实际操作”

不确定这里的方法组意味着什么或如何修复它。

c#

3
推荐指数
1
解决办法
1419
查看次数

如何将字符串编码为 UTF-8 到预先存在的字节数组?

我有一段简单的代码,可以将 C# 字符串编码为 UTF-8,然后从中创建一个字节数组。但我想知道如何使用我已经在起始索引处创建的字节数组编码为 UTF-8?

这就是我当前编码并获取结果字节数组的方式:

byte[] result = Encoding.UTF8.GetBytes(myString);
Run Code Online (Sandbox Code Playgroud)

但我有一个预先制作的字节数组,如果有意义的话,我更愿意在特定索引处写入。是否有任何内置方法可以做到这一点,如果没有,我将如何去做?

c# arrays string encoding utf-8

2
推荐指数
1
解决办法
1629
查看次数

两个具有相同对象名称的名称空间

我有两个名称空间:

System.Numerics和UnityEngine

两者都有类型Vector3.

所以现在,当我想要使用它时,我必须在它之前声明哪个命名空间.像这样:

protected struct CVN
{
    public Complex h;
    public UnityEngine.Vector2 d;
    public UnityEngine.Vector3 n;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法定义我只想Vector3从一个命名空间,所以我不必总是NameSpaceHere.Vector3每次都输入?

或者我坚持每次都说明命名空间的繁琐性质.特别是因为我只需要Complex来自Numerics 的类型它非常烦人.

c#

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

在 C# 中的 for 循环之外获取对象数据

我对 C# 真的很陌生,我是从 Javascript 开始的,所以理解 C# 的行为有点困难。

我正在尝试在 for 循环内创建一个简单的对象,然后显示分配的值,但这存在范围问题,并且不清楚如何在 for 循环之外访问它?

这是我的代码设置:

public class Player{
    public int identity;
    public int score;

    public Player(int id){
        identity = id;
        score    = 0;
    }
}
for (int i = 0; i < max; i++){
        Player player = new Player(i);
}

//here i want to access a player and print the information for said player
Run Code Online (Sandbox Code Playgroud)

我不知道如何在循环之外访问新创建的玩家,这是如何完成的?

c#

0
推荐指数
1
解决办法
686
查看次数

C#中的函数重载是个好主意吗?

所以我有一种情况,根据我想要的最终结果,我需要不同数量的函数参数.

我是C#的新手,并且听说过重载函数,这不是我以前见过的(我从JavaScript开始).

但它看起来有点脏,即使它确实有效,也不是一个好的做法.使用重载函数通常不是一个好主意,我可能会做更多工作的替代方案,但重载会让生活更轻松.

使用多个具有相同名称的方法感觉非常不舒服.这些是标准功能和可接受的代码实践吗?或者它可能导致未来的一些混乱问题,我的缺乏经验还不知道,因此我应该避免它?

c#

0
推荐指数
1
解决办法
206
查看次数

如何使用 switch 语句来比较引用

我正在尝试匹配对结构中字段的引用,但我不确定如何将其作为案例设置而不是 if 语句来执行。

这是我对 if 语句所做的一般想法:

public struct Test
{
   // MyObject is a class
   public MyObject A;
   public MyObject B;
   public MyObject C;

   public bool Distance(MyObject obj, out float distance){
        distance = float.PositiveInfinity;
        if(A == obj){
         distance = DistanceFrom(A);
         return true;
        }
        if(B == obj){
         distance = DistanceFrom(B);
         return true;
        }
        if(C == obj){
         distance = DistanceFrom(C); 
         return true;
        }
        //object does not relate to this struct so return false
        return false;
   }
}
Run Code Online (Sandbox Code Playgroud)

我的实际结构中有超过 3 个(总共 24 个),但我想知道如何通过 …

c#

0
推荐指数
1
解决办法
1222
查看次数

标签 统计

c# ×10

.net ×1

arrays ×1

encoding ×1

generics ×1

go ×1

particle-system ×1

sockets ×1

string ×1

tcp ×1

unity5 ×1

utf-8 ×1