[急++]C#中的空指针问题
今天刚开始弄C#,遇到了一个很严重的问题。。。就是我再程序中声明一个类,有若干数据成员,并进行批量声明,之后的初始化无法进行,抛出NullReferenceEception,调试信息显示这个类的所有成员属性都是null,为何如此,如何解决呢。。。
附上难看的代码。。。
附上难看的代码。。。
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication4
{
class huffman
{
const int MAX_SIZE = 255; //缓冲区大小
const int MAXLEN_PATH = 256; //最长路径
const int TABLE_SIZE = 256; //最大权值表大小,不加结束字符
const int TREE_SIZE = (2 * (TABLE_SIZE + 1) - 1); //哈夫曼树结点个数(加上结束字符) 513
const int MAX_BIT = 255; //结点的最大编码位数
const int MAX_INT = (1 << 32 - 1); //最大的整数值
const int END_NUM = 256; //结束符对应的num,权值为1
public char[] Path=new char[MAXLEN_PATH]; //叶子节点的路径,即为叶子节点的编码值,以'\0'作为结束
public huffman(string Source_Path,string Encode_Path)
{
MessageBox.Show(Source_Path +"to\n"+ Encode_Path);
init();
InitHuffmanTree();//初始化哈夫曼树
CalWeights(Source_Path);//计算源文件个字节的权值
SortWeight();
CreateHuffman();//创建哈夫曼树
EnCode(Source_Path, Encode_Path);
}
public huffman(string Source_Path, string Decode_Path,int x)
{
MessageBox.Show(Source_Path + "to\n" + Decode_Path);
init();
InitHuffmanTree();//初始化哈夫曼树
CalWeights(Source_Path);//计算源文件个字节的权值
SortWeight();
CreateHuffman();//创建哈夫曼树
if (x == 1)
{
DeCode(Source_Path, Decode_Path);
}
}
//转换函数将字符转换为十进制整数
public int CHARTONUM(char c)
{
return ((int)c - 48);
}
//类Node定义哈夫曼树节点
public class Node
{
public int weights; //结点权值
public int left; //左孩子结点
public int right; //右孩子结点
public int parent; //父结点
public int num; //当前对应的数
public bool live; //当前树是否存在
//结点权值属性
public int Weight
{
get
{
return weights;
}
set
{
weights = value;
}
}
//左孩子结点属性
public int Left
{
get
{
return left;
}
set
{
left = value;
}
}
//右孩子结点属性
public int RChild
{
get
{
return right;
}
set
{
right = value;
}
}
//父结点属性
public int Parent
{
get
{
return parent;
}
set
{
parent = value;
}
}
//构造器
public Node()
{
weights = 0;
left = -1;
right = -1;
parent = -1;
num = 0;
live = true;
}
public Node(int w, int lc, int rc, int p)
{
weights = w;
left = lc;
right = rc;
parent = p;
}
}//定义节点完成
public Node[] HuffmanTree = new Node[TREE_SIZE];
public void init()//初始化函数
{
try
{
for (int i = 0; i < TABLE_SIZE; i++)
{
HuffmanTree[i].left = -1;//到这里就抛异常了。。。
HuffmanTree[i].right = -1;
HuffmanTree[i].parent = -1;
HuffmanTree[i].num = i;
HuffmanTree[i].live = true;
}
}
catch (NullReferenceException) { };
}
...全文
相关推荐
C# Spy++源代码
1.实现了SPY++的核心功能,获取窗口句柄、窗口标题、类型名等信息; 2.实现了高亮功能;
C# 中的指针及其用法
我们了解了如何声明和初始化指针,访问指针指向的值,进行指针的算术运算以及指针与数组的结合使用。然而,需要注意的是,指针的使用需要谨慎,并且需要在编译时启用。指针是一种强大而灵活的概念,它允许我们直接访问和操作内存中的数据。在本文中,我们将详细介绍 C# 中的指针及其用法,并提供相应的源代码示例。此外,指针的使用也带来了一些潜在的风险,如悬空指针和内存泄漏等问题。C# 中的指针还支持算术运算,包括指针的加法和减法。将指针向后移动一个位置,再次打印指针指向的值。将指针向前移动一个位置,并再次打印指针指向的值。
C#实现的类似SPY++查找窗体,源代码
本人日积月累摸索整理很久的一个代码例子,功能类似SPY++的查找窗口,C#源代码测试通过,可供WINAPI初学者有借鉴学习之用。 只要1分,绝对良心回馈CSDN!
C#模仿Spy++
使用C#模仿Spy++.主要是熟悉Windows底层API.熟悉句柄操作和消息机制
spy++C#版源码
这是一个不错的项目源码案例,功能还比vs自带spy++强,【以分享为目的】


