小编Hei*_*bug的帖子

电脑是如何绘制屏幕的?

计算机如何在最低级别向屏幕绘制任何内容(没有关于外部库,如X11)?是否应该有汇编命令来执行此操作?CPU如何控制屏幕上显示的内容?

cpu assembly screen low-level graphic

11
推荐指数
2
解决办法
2428
查看次数

C#中不同文件的预处理程序指令

我知道我可以使用预处理器指令C#来启用/禁用某些代码的编译.

如果我在同一个文件中定义一个指令,它可以正常工作:

#define LINQ_ENABLED
using System;
using System.Collections.Generic;

#if  LINQ_ENABLED
using System.Linq;      
#endif
Run Code Online (Sandbox Code Playgroud)

现在,我用于C++将所有这些配置指令放在单个头文件中,并将其包含在我需要这些指令的所有文件中.

如果我做同样的C#事情是行不通的:

//Config.cs
#define LINQ_ENABLED

//MyClass.cs
#define LINQ_ENABLED
using System;
using System.Collections.Generic;

#if  LINQ_ENABLED
using System.Linq;      
#endif
Run Code Online (Sandbox Code Playgroud)

我也试过以下但似乎我无法在命名空间内定义指令:

//Config.cs
namespace Conf{
#define LINQ_ENABLED
}

//MyClass.cs
#define LINQ_ENABLED
using System;
using System.Collections.Generic;
using Conf;
#if  LINQ_ENABLED
using System.Linq;      
#endif
Run Code Online (Sandbox Code Playgroud)
  1. 我究竟做错了什么?
  2. 在不同文件中使用预处理器的正确方法是 C#什么?
  3. 有没有更好的方法呢?

c# conditional-compilation c-preprocessor

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

从byte []创建AudioClip

我有问题.我使用sqlite来存储声音.我在byte []中得到声音.然后将byte []转换为float []:

            private float[] ConvertByteToFloat(byte[] array) 
            {
                float[] floatArr = new float[array.Length / 4];
                for (int i = 0; i < floatArr.Length; i++) 
                {
                    if (BitConverter.IsLittleEndian) 
                        Array.Reverse(array, i * 4, 4);
                    floatArr[i] = BitConverter.ToSingle(array, i * 4);
                }
                return floatArr;
            } 


            float[] f = ConvertByteToFloat(bytes);
Run Code Online (Sandbox Code Playgroud)

然后创建AudioClip:

    AudioClip audioClip = AudioClip.Create("testSound", f.Length, 1, 44100, false, false);
    audioClip.SetData(f, 0);
Run Code Online (Sandbox Code Playgroud)

然后玩吧

AudioSource.PlayClipAtPoint(audioClip, new Vector3(100, 100, 0), 1.0f);
Run Code Online (Sandbox Code Playgroud)

但结果是噪音:(.

c# arrays endianness unity-game-engine

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

无法从'int*'转换为'int []'?

我知道这可能是一个常见的问题,但我试图搜索但仍然找不到明确的答案.

我有以下代码:

int* f() {
    int a[] = {1,2,3};
    return a;
}

int main() {

    int a[] = f(); // Error here

    getch();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码生成错误消息:" Cannot convert from 'int *' to 'int []'"

我发现这很奇怪,因为我已经读过指针和数组是相似的.例如,我们可以使用[i]代替*(a + i).请问有人能给我一个明确的解释吗?

c c++ pointers

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

JTable Cell Renderer

我正在关注我发现的一些代码,(是的,我理解它是如何工作的)它来自这里:Code Link

如果单元格值设置为"黄色",我正在尝试设置单元格前景色

这是我的代码:

public class Board extends JPanel{

private static final long serialVersionUID = 1L;

int boardHeight = 20;
int boardWidth = 10;

JTable table;

public Board() {
    table = new JTable(this.boardHeight, this.boardWidth);
    table.setDefaultRenderer(String.class, new BoardTableCellRenderer());
    table.setFocusable(false);
    table.setShowGrid(false);
    table.setRowMargin(0);
    table.setIntercellSpacing(new Dimension(0,0));
    table.setRowSelectionAllowed(false);
    table.setVisible(true);
    this.add(table);
    this.setPreferredSize(new Dimension(table.getPreferredSize().width, (table.getPreferredSize().height + 85)));
}

public void paint(Graphics g) {
    table.setRowHeight(20);
    for (int x = 0; x < this.table.getColumnCount(); ++x) {
        TableColumn col = this.table.getColumnModel().getColumn(x);
        col.setPreferredWidth(20);
    }
}
}
Run Code Online (Sandbox Code Playgroud)

还有Cell Renderer

public class …
Run Code Online (Sandbox Code Playgroud)

java swing jtable tablecellrenderer

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

Java泛型和数组构造

假设我有一个带泛型参数T的泛型类,它是一个Number子类.我想在课程构建期间初始化一个T数组.可能吗?如果有,怎么样?如果不是为什么?

public class AClass<T extends Number>{

    private T array[];
    private int arrayOfInt[];

    public AClass(int size){
        arrayOfInt = new int[size];
        array = ? //what should I put here?
    } 
} 
Run Code Online (Sandbox Code Playgroud)

java arrays generics

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

需要从c ++中的派生类调用基础析构函数方法吗?

请考虑以下事项

class base{
    base();
    ~base();
}:

class derived : public base{

};
Run Code Online (Sandbox Code Playgroud)

当派生对象被破坏并且派生类没有定义析构函数时,是否会自动调用基类析构函数?

否则,如果我在派生类中也有析构函数,我是否还需要显式调用基类析构函数?

class base{
    base();
    ~base();
}:

class derived : public base{
     derived();
     ~derived
           base::~base(); //do I need this?
     }
};
Run Code Online (Sandbox Code Playgroud)

c++ destructor base-class derived-class

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

工厂模式,另一种模式或根本没有模式?

我有2个案例,一个方法可以被认为是一个工厂设计模式,这个例子是在C#,altought,可以应用于其他编程语言:

enum NinjaTypes {
  Generic,
  Katanna,
  StarThrower,
  Invisible,
  Flyer
}

public class Ninja {
  public string Name { get; set; }
  public void jump() { ... }
  public void kickAss() { ... }
}

public class KatannaNinja: Ninja {
  public void useKatanna() { ... }
}

public class StarNinja: Ninja {
  public void throwStar() { ... }
}

public class InvisibleNinja: Ninja {
  public void becomeInvisible() {...}
  public void becomeVisible() {...}
}

public class FlyNinja: Ninja {
  public void fly() …
Run Code Online (Sandbox Code Playgroud)

c# oop design-patterns factory-pattern

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

在运行XNA游戏时,在visual studio中观看控制台输出面板

我是一个视觉工作室新手,目前正在使用VS 2010 express,C#和XNA 4.0开发游戏.

我正在尝试调试我正在开发的一个小游戏,当某个事件发生时使用Console.WriteLine调用.不幸的是,当我执行程序时,visual studio布局发生了变化,输出面板消失,直到程序退出(所以我只能在程序结束后分析输出).

我想知道是否有可能以及如何保持输出面板可见.

c# console visual-studio-express xna-4.0

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

了解C#泛型和Nullable值类型.返回null或可空

假设我有以下课程:

public class GenericClass<T>
{
    public T Find()
    {
        //return T if found otherwise null or Nullable<T>
    }
}
Run Code Online (Sandbox Code Playgroud)

在某个地方,我想把我的班级专门T用于a class,其他时候用a struct.我正面临这个问题:我不能返回一个Nullable<T>if T类型不限于一个struct.

我想提供一个我的Find方法的实现,如果T专门用于a class或a struct.如果Find失败,我想返回,null否则T是一个类Nullable<T>.

没有使用反射可能吗?如果有,怎么样?

c# generics mono null nullable

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